Page MenuHomeIn-Portal Phabricator

in-commerce
No OneTemporary

File Metadata

Created
Sat, Feb 1, 10:08 AM

in-commerce

This file is larger than 256 KB, so syntax highlighting was skipped.
Index: branches/5.2.x/units/orders/orders_event_handler.php
===================================================================
--- branches/5.2.x/units/orders/orders_event_handler.php (revision 14883)
+++ branches/5.2.x/units/orders/orders_event_handler.php (revision 14884)
@@ -1,3945 +1,3948 @@
<?php
/**
* @version $Id$
* @package In-Commerce
* @copyright Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
* @license Commercial License
* This software is protected by copyright law and international treaties.
* Unauthorized reproduction or unlicensed usage of the code of this program,
* or any portion of it may result in severe civil and criminal penalties,
* and will be prosecuted to the maximum extent possible under the law
* See http://www.in-portal.org/commercial-license for copyright notices and details.
*/
defined('FULL_PATH') or die('restricted access!');
class OrdersEventHandler extends kDBEventHandler
{
/**
* Checks user permission to execute given $event
*
* @param kEvent $event
* @return bool
* @access public
*/
public function CheckPermission(&$event)
{
if (!$this->Application->isAdminUser) {
if ($event->Name == 'OnCreate') {
// user can't initiate custom order creation directly
return false;
}
$user_id = $this->Application->RecallVar('user_id');
$items_info = $this->Application->GetVar($event->getPrefixSpecial(true));
if ($items_info) {
// when POST is present, then check when is beeing submitted
$order_session_id = $this->Application->RecallVar($event->getPrefixSpecial(true).'_id');
$order_dummy =& $this->Application->recallObject($event->Prefix.'.-item', null, Array('skip_autoload' => true));
/* @var $order_dummy OrdersItem */
foreach ($items_info as $id => $field_values) {
if ($order_session_id != $id) {
// user is trying update not his order, even order from other guest
return false;
}
$order_dummy->Load($id);
// session_id matches order_id from submit
if ($order_dummy->GetDBField('PortalUserId') != $user_id) {
// user performs event on other user order
return false;
}
$status_field = array_shift($this->Application->getUnitOption($event->Prefix, 'StatusField'));
if (isset($field_values[$status_field]) && $order_dummy->GetDBField($status_field) != $field_values[$status_field]) {
// user can't change status by himself
return false;
}
if ($order_dummy->GetDBField($status_field) != ORDER_STATUS_INCOMPLETE) {
// user can't edit orders being processed
return false;
}
if ($event->Name == 'OnUpdate') {
// all checks were ok -> it's user's order -> allow to modify
return true;
}
}
}
}
if ($event->Name == 'OnQuietPreSave') {
$section = $event->getSection();
if ($this->isNewItemCreate($event)) {
return $this->Application->CheckPermission($section.'.add', 1);
}
else {
return $this->Application->CheckPermission($section.'.add', 1) || $this->Application->CheckPermission($section.'.edit', 1);
}
}
return parent::CheckPermission($event);
}
/**
* Allows to override standard permission mapping
*
*/
function mapPermissions()
{
parent::mapPermissions();
$permissions = Array(
// admin
'OnRecalculateItems' => Array('self' => 'add|edit'),
'OnResetToUser' => Array('self' => 'add|edit'),
'OnResetToBilling' => Array('self' => 'add|edit'),
'OnResetToShipping' => Array('self' => 'add|edit'),
'OnMassOrderApprove' => Array('self' => 'advanced:approve'),
'OnMassOrderDeny' => Array('self' => 'advanced:deny'),
'OnMassOrderArchive' => Array('self' => 'advanced:archive'),
'OnMassPlaceOrder' => Array('self' => 'advanced:place'),
'OnMassOrderProcess' => Array('self' => 'advanced:process'),
'OnMassOrderShip' => Array('self' => 'advanced:ship'),
'OnResetToPending' => Array('self' => 'advanced:reset_to_pending'),
'OnLoadSelected' => Array('self' => 'view'), // print in this case
'OnGoToOrder' => Array('self' => 'view'),
// front-end
'OnViewCart' => Array('self' => true),
'OnAddToCart' => Array('self' => true),
'OnRemoveFromCart' => Array('self' => true),
'OnUpdateCart' => Array('self' => true),
'OnUpdateCartJSON' => Array('self' => true),
'OnUpdateItemOptions' => Array('self' => true),
'OnCleanupCart' => Array('self' => true),
'OnContinueShopping' => Array('self' => true),
'OnCheckout' => Array('self' => true),
'OnSelectAddress' => Array('self' => true),
'OnProceedToBilling' => Array('self' => true),
'OnProceedToPreview' => Array('self' => true),
'OnCompleteOrder' => Array('self' => true),
'OnUpdateAjax' => Array('self' => true),
'OnRemoveCoupon' => Array('self' => true),
'OnRemoveGiftCertificate' => Array('self' => true),
'OnCancelRecurring' => Array('self' => true),
'OnAddVirtualProductToCart' => Array('self' => true),
'OnItemBuild' => Array('self' => true),
'OnDownloadLabel' => Array('self' => true, 'subitem' => true),
);
$this->permMapping = array_merge($this->permMapping, $permissions);
}
function mapEvents()
{
parent::mapEvents();
$common_events = Array(
'OnResetToUser' => 'OnResetAddress',
'OnResetToBilling' => 'OnResetAddress',
'OnResetToShipping' => 'OnResetAddress',
'OnMassOrderProcess' => 'MassInventoryAction',
'OnMassOrderApprove' => 'MassInventoryAction',
'OnMassOrderDeny' => 'MassInventoryAction',
'OnMassOrderArchive' => 'MassInventoryAction',
'OnMassOrderShip' => 'MassInventoryAction',
'OnOrderProcess' => 'InventoryAction',
'OnOrderApprove' => 'InventoryAction',
'OnOrderDeny' => 'InventoryAction',
'OnOrderArchive' => 'InventoryAction',
'OnOrderShip' => 'InventoryAction',
);
$this->eventMethods = array_merge($this->eventMethods, $common_events);
}
/* ======================== FRONT ONLY ======================== */
function OnQuietPreSave(&$event)
{
$object =& $event->getObject();
/* @var $object kDBItem */
$object->IgnoreValidation = true;
$event->CallSubEvent('OnPreSave');
$object->IgnoreValidation = false;
}
/**
* Sets new address to order
*
* @param kEvent $event
*/
function OnSelectAddress(&$event)
{
if ($this->Application->isAdminUser) {
return ;
}
$object =& $event->getObject();
/* @var $object OrdersItem */
$shipping_address_id = $this->Application->GetVar('shipping_address_id');
$billing_address_id = $this->Application->GetVar('billing_address_id');
if ($shipping_address_id || $billing_address_id) {
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
/* @var $cs_helper kCountryStatesHelper */
$address =& $this->Application->recallObject('addr.-item','addr', Array('skip_autoload' => true));
/* @var $address AddressesItem */
$addr_list =& $this->Application->recallObject('addr', 'addr_List', Array('per_page'=>-1, 'skip_counting'=>true) );
/* @var $addr_list AddressesList */
$addr_list->Query();
}
if ($shipping_address_id > 0) {
$addr_list->CopyAddress($shipping_address_id, 'Shipping');
$address->Load($shipping_address_id);
$address->MarkAddress('Shipping');
$cs_helper->PopulateStates($event, 'ShippingState', 'ShippingCountry');
$object->setRequired('ShippingState', false);
}
elseif ($shipping_address_id == -1) {
$object->ResetAddress('Shipping');
}
if ($billing_address_id > 0) {
$addr_list->CopyAddress($billing_address_id, 'Billing');
$address->Load($billing_address_id);
$address->MarkAddress('Billing');
$cs_helper->PopulateStates($event, 'BillingState', 'BillingCountry');
$object->setRequired('BillingState', false);
}
elseif ($billing_address_id == -1) {
$object->ResetAddress('Billing');
}
$event->redirect = false;
$object->IgnoreValidation = true;
$this->RecalculateTax($event);
$object->Update();
}
/**
* Updates order with registred user id
*
* @param kEvent $event
*/
function OnUserCreate(&$event)
{
if( !($event->MasterEvent->status == kEvent::erSUCCESS) ) return false;
$ses_id = $this->Application->RecallVar('front_order_id');
if($ses_id)
{
$this->updateUserID($ses_id, $event);
$this->Application->RemoveVar('front_order_id');
}
}
/**
* Updates shopping cart with logged-in user details
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnUserLogin(&$event)
{
if ( ($event->MasterEvent->status != kEvent::erSUCCESS) || kUtil::constOn('IS_INSTALL') ) {
// login failed OR login during installation
return;
}
$ses_id = $this->Application->RecallVar('ord_id');
if ( $ses_id ) {
$this->updateUserID($ses_id, $event);
}
$user_id = $this->Application->RecallVar('user_id');
$affiliate_id = $this->isAffiliate($user_id);
if ( $affiliate_id ) {
$this->Application->setVisitField('AffiliateId', $affiliate_id);
}
$event->CallSubEvent('OnRecalculateItems');
}
/**
* Puts ID of just logged-in user into current order
*
* @param int $order_id
* @param kEvent $event
* @return void
*/
function updateUserID($order_id, &$event)
{
$user =& $this->Application->recallObject('u.current');
/* @var $user UsersItem */
$affiliate_id = $this->isAffiliate( $user->GetID() );
$fields_hash = Array (
'PortalUserId' => $user->GetID(),
'BillingEmail' => $user->GetDBField('Email'),
);
if ( $affiliate_id ) {
$fields_hash['AffiliateId'] = $affiliate_id;
}
$id_field = $this->Application->getUnitOption($event->Prefix, 'IDField');
$table_name = $this->Application->getUnitOption($event->Prefix, 'TableName');
$this->Conn->doUpdate($fields_hash, $table_name, $id_field . ' = ' . $order_id);
$object =& $event->getObject();
/* @var $object kDBItem */
// set user id to object, since it will be used during order update from OnRecalculateItems event
$object->SetDBField('PortalUserId', $user->GetID());
}
function isAffiliate($user_id)
{
$affiliate_user =& $this->Application->recallObject('affil.-item', null, Array('skip_autoload' => true) );
/* @var $affiliate_user kDBItem */
$affiliate_user->Load($user_id, 'PortalUserId');
return $affiliate_user->isLoaded() ? $affiliate_user->GetDBField('AffiliateId') : 0;
}
/**
* Charge order
*
* @param OrdersItem $order
* @return Array
*/
function ChargeOrder(&$order)
{
$gw_data = $order->getGatewayData();
$this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
$gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
/* @var $gateway_object kGWBase */
$payment_result = $gateway_object->DirectPayment($order->GetFieldValues(), $gw_data['gw_params']);
$sql = 'UPDATE %s SET GWResult1 = %s WHERE %s = %s';
$sql = sprintf($sql, $order->TableName, $this->Conn->qstr($gateway_object->getGWResponce()), $order->IDField, $order->GetID() );
$this->Conn->Query($sql);
$order->SetDBField('GWResult1', $gateway_object->getGWResponce() );
return array('result'=>$payment_result, 'data'=>$gateway_object->parsed_responce, 'gw_data' => $gw_data, 'error_msg'=>$gateway_object->getErrorMsg());
}
/**
* Returns parameters, used to send order-related e-mails
*
* @param OrdersItem $order
* @return array
*/
function OrderEmailParams(&$order)
{
$billing_email = $order->GetDBField('BillingEmail');
$user_email = $this->Conn->GetOne(' SELECT Email FROM '.$this->Application->getUnitOption('u', 'TableName').'
WHERE PortalUserId = '.$order->GetDBField('PortalUserId'));
$email_params = Array();
$email_params['_user_email'] = $user_email; //for use when shipping vs user is required in InventoryAction
$email_params['to_email'] = $billing_email ? $billing_email : $user_email;
$email_params['to_name'] = $order->GetDBField('BillingTo');
return $email_params;
}
function PrepareCoupons(&$event, &$order)
{
$order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) );
/* @var $order_items kDBList */
$order_items->linkToParent($order->Special);
$order_items->Query();
$order_items->GoFirst();
$assigned_coupons = array();
$coup_handler =& $this->Application->recallObject('coup_EventHandler');
foreach($order_items->Records as $product_item)
{
if ($product_item['ItemData']) {
$item_data = unserialize($product_item['ItemData']);
if (isset($item_data['AssignedCoupon']) && $item_data['AssignedCoupon']) {
$coupon_id = $item_data['AssignedCoupon'];
// clone coupon, get new coupon ID
$coupon =& $this->Application->recallObject('coup',null,array('skip_autload' => true));
/* @var $coupon kDBItem */
$coupon->Load($coupon_id);
if (!$coupon->isLoaded()) continue;
$coup_handler->SetNewCode($coupon);
$coupon->NameCopy();
$coupon->SetDBField('Name', $coupon->GetDBField('Name').' (Order #'.$order->GetField('OrderNumber').')');
$coupon->Create();
// add coupon code to array
array_push($assigned_coupons, $coupon->GetDBField('Code'));
}
}
}
/* @var $order OrdersItem */
if ($assigned_coupons) {
$comments = $order->GetDBField('AdminComment');
if ($comments) $comments .= "\r\n";
$comments .= "Issued coupon(s): ". join(',', $assigned_coupons);
$order->SetDBField('AdminComment', $comments);
$order->Update();
}
if ($assigned_coupons) $this->Application->SetVar('order_coupons', join(',', $assigned_coupons));
}
/**
* Completes order if possible
*
* @param kEvent $event
* @return bool
*/
function OnCompleteOrder(&$event)
{
$this->LockTables($event);
if ( !$this->CheckQuantites($event) ) {
return;
}
$this->ReserveItems($event);
$order =& $event->getObject();
/* @var $order OrdersItem */
$charge_result = $this->ChargeOrder($order);
if (!$charge_result['result']) {
$this->FreeItems($event);
$this->Application->StoreVar('gw_error', $charge_result['error_msg']);
//$this->Application->StoreVar('gw_error', getArrayValue($charge_result, 'data', 'responce_reason_text') );
$event->redirect = $this->Application->GetVar('failure_template');
$event->SetRedirectParam('m_cat_id', 0);
if ($event->Special == 'recurring') { // if we set failed status for other than recurring special the redirect will not occur
$event->status = kEvent::erFAIL;
}
return false;
}
// call CompleteOrder events for items in order BEFORE SplitOrder (because ApproveEvents are called there)
$order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) );
/* @var $order_items kDBList */
$order_items->linkToParent($order->Special);
$order_items->Query(true);
$order_items->GoFirst();
foreach($order_items->Records as $product_item)
{
if (!$product_item['ProductId']) continue; // product may have been deleted
$this->raiseProductEvent('CompleteOrder', $product_item['ProductId'], $product_item);
}
$shipping_control = getArrayValue($charge_result, 'gw_data', 'gw_params', 'shipping_control');
if ($event->Special != 'recurring') {
if ($shipping_control && $shipping_control != SHIPPING_CONTROL_PREAUTH ) {
// we have to do it here, because the coupons are used in the e-mails
$this->PrepareCoupons($event, $order);
}
$this->Application->EmailEventUser('ORDER.SUBMIT', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order));
$this->Application->EmailEventAdmin('ORDER.SUBMIT');
}
if ($shipping_control === false || $shipping_control == SHIPPING_CONTROL_PREAUTH ) {
$order->SetDBField('Status', ORDER_STATUS_PENDING);
$order->Update();
}
else {
$this->SplitOrder($event, $order);
}
if (!$this->Application->isAdminUser) {
// for tracking code
$this->Application->StoreVar('last_order_amount', $order->GetDBField('TotalAmount'));
$this->Application->StoreVar('last_order_number', $order->GetDBField('OrderNumber'));
$this->Application->StoreVar('last_order_customer', $order->GetDBField('BillingTo'));
$this->Application->StoreVar('last_order_user', $order->GetDBField('Username'));
$event->redirect = $this->Application->GetVar('success_template');
$event->SetRedirectParam('m_cat_id', 0);
}
else
{
// $event->CallSubEvent('OnSave');
}
$order_id = $order->GetId();
$order_idfield = $this->Application->getUnitOption('ord','IDField');
$order_table = $this->Application->getUnitOption('ord','TableName');
$original_amount = $order->GetDBField('SubTotal') + $order->GetDBField('ShippingCost') + $order->GetDBField('VAT') + $order->GetDBField('ProcessingFee') + $order->GetDBField('InsuranceFee') - $order->GetDBField('GiftCertificateDiscount');
$sql = 'UPDATE '.$order_table.'
SET OriginalAmount = '.$original_amount.'
WHERE '.$order_idfield.' = '.$order_id;
$this->Conn->Query($sql);
$this->Application->StoreVar('front_order_id', $order_id);
$this->Application->RemoveVar('ord_id');
$this->Application->Session->SetCookie('shop_cart_cookie', '', strtotime('-1 month'));
}
/**
* Set billing address same as shipping
*
* @param kEvent $event
*/
function setBillingAddress(&$event)
{
$object =& $event->getObject();
/* @var $object OrdersItem */
if ( $object->HasTangibleItems() ) {
if ( $this->Application->GetVar('same_address') ) {
// copy shipping address to billing
$items_info = $this->Application->GetVar($event->getPrefixSpecial(true));
list($id, $field_values) = each($items_info);
$address_fields = Array (
'To', 'Company', 'Phone', 'Fax', 'Email',
'Address1', 'Address2', 'City', 'State',
'Zip', 'Country'
);
foreach ($address_fields as $address_field) {
$items_info[$id]['Billing' . $address_field] = $object->GetDBField('Shipping' . $address_field);
}
$this->Application->SetVar($event->getPrefixSpecial(true), $items_info);
}
}
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnProceedToPreview(&$event)
{
$this->setBillingAddress($event);
$event->CallSubEvent('OnUpdate');
$event->redirect = $this->Application->GetVar('preview_template');
}
function OnViewCart(&$event)
{
$this->StoreContinueShoppingLink();
$event->redirect = $this->Application->GetVar('viewcart_template');
}
function OnContinueShopping(&$event)
{
$order_helper =& $this->Application->recallObject('OrderHelper');
/* @var $order_helper OrderHelper */
$template = $this->Application->GetVar('continue_shopping_template');
$event->redirect = $order_helper->getContinueShoppingTemplate($template);
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnCheckout(&$event)
{
$this->OnUpdateCart($event);
if ( !$event->getEventParam('RecalculateChangedCart') ) {
$object =& $event->getObject();
/* @var $object OrdersItem */
if ( !$object->HasTangibleItems() ) {
$object->SetDBField('ShippingTo', '');
$object->SetDBField('ShippingCompany', '');
$object->SetDBField('ShippingPhone', '');
$object->SetDBField('ShippingFax', '');
$object->SetDBField('ShippingEmail', '');
$object->SetDBField('ShippingAddress1', '');
$object->SetDBField('ShippingAddress2', '');
$object->SetDBField('ShippingCity', '');
$object->SetDBField('ShippingState', '');
$object->SetDBField('ShippingZip', '');
$object->SetDBField('ShippingCountry', '');
$object->SetDBField('ShippingType', 0);
$object->SetDBField('ShippingCost', 0);
$object->SetDBField('ShippingCustomerAccount', '');
$object->SetDBField('ShippingTracking', '');
$object->SetDBField('ShippingDate', 0);
$object->SetDBField('ShippingOption', 0);
$object->SetDBField('ShippingInfo', '');
$object->Update();
}
$event->redirect = $this->Application->GetVar('next_step_template');
$order_id = $this->Application->GetVar('order_id');
if ( $order_id !== false ) {
$event->SetRedirectParam('ord_id', $order_id);
}
}
}
/**
* Restores order from cookie
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnRestoreOrder(kEvent &$event)
{
if ( $this->Application->isAdmin || $this->Application->RecallVar('ord_id') ) {
// admin OR there is an active order -> don't restore from cookie
return;
}
$shop_cart_cookie = $this->Application->GetVarDirect('shop_cart_cookie', 'Cookie');
if ( !$shop_cart_cookie ) {
return;
}
$user_id = $this->Application->RecallVar('user_id');
$sql = 'SELECT OrderId
FROM ' . TABLE_PREFIX . 'Orders
WHERE (OrderId = ' . (int)$shop_cart_cookie . ') AND (Status = ' . ORDER_STATUS_INCOMPLETE . ') AND (PortalUserId = ' . $user_id . ')';
$order_id = $this->Conn->GetOne($sql);
if ( $order_id ) {
$this->Application->StoreVar('ord_id', $order_id);
}
}
/**
* Redirect user to Billing checkout step
*
* @param kEvent $event
*/
function OnProceedToBilling(&$event)
{
$items_info = $this->Application->GetVar($event->getPrefixSpecial(true));
if ( $items_info ) {
list($id, $field_values) = each($items_info);
$object =& $event->getObject();
/* @var $object kDBItem */
$payment_type_id = $object->GetDBField('PaymentType');
if ( !$payment_type_id ) {
$default_type = $this->_getDefaultPaymentType();
if ( $default_type ) {
$field_values['PaymentType'] = $default_type;
$items_info[$id] = $field_values;
$this->Application->SetVar($event->getPrefixSpecial(true), $items_info);
}
}
}
$event->CallSubEvent('OnUpdate');
$event->redirect = $this->Application->GetVar('next_step_template');
}
/**
* Removes reoccurring mark from the order
*
* @param kEvent $event
* @return void
*/
protected function OnCancelRecurring(&$event)
{
$order =& $event->getObject();
/* @var $order OrdersItem */
$order->SetDBField('IsRecurringBilling', 0);
$order->Update();
if ( $this->Application->GetVar('cancelrecurring_ok_template') ) {
$event->redirect = $this->Application->GetVar('cancelrecurring_ok_template');
}
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnAfterItemUpdate(&$event)
{
parent::OnAfterItemUpdate($event);
$object =& $event->getObject();
/* @var $object OrdersItem */
$cvv2 = $object->GetDBField('PaymentCVV2');
if ( $cvv2 !== false ) {
$this->Application->StoreVar('CVV2Code', $cvv2);
}
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnUpdate(&$event)
{
$this->setBillingAddress($event);
parent::OnUpdate($event);
if ($this->Application->isAdminUser) {
return ;
}
else {
$event->setRedirectParams(Array('opener' => 's'), true);
}
if ($event->status == kEvent::erSUCCESS) {
$this->createMissingAddresses($event);
}
else {
// strange: recalculate total amount on error
$object =& $event->getObject();
/* @var $object OrdersItem */
$object->SetDBField('TotalAmount', $object->getTotalAmount());
}
}
/**
* Creates new address
*
* @param kEvent $event
*/
function createMissingAddresses(&$event)
{
if ( !$this->Application->LoggedIn() ) {
return ;
}
$object =& $event->getObject();
/* @var $object kDBItem */
$addr_list =& $this->Application->recallObject('addr', 'addr_List', Array ('per_page' => -1, 'skip_counting' => true));
/* @var $addr_list kDBList */
$addr_list->Query();
$address_dummy =& $this->Application->recallObject('addr.-item', null, Array ('skip_autoload' => true));
/* @var $address_dummy AddressesItem */
$address_prefixes = Array ('Billing', 'Shipping');
$address_fields = Array (
'To', 'Company', 'Phone', 'Fax', 'Email', 'Address1',
'Address2', 'City', 'State', 'Zip', 'Country'
);
foreach ($address_prefixes as $address_prefix) {
$address_id = $this->Application->GetVar(strtolower($address_prefix) . '_address_id');
if ( !$this->Application->GetVar('check_' . strtolower($address_prefix) . '_address') ) {
// form type doesn't match check type, e.g. shipping check on billing form
continue;
}
if ( $address_id > 0 ) {
$address_dummy->Load($address_id);
}
else {
$address_dummy->SetDBField('PortalUserId', $this->Application->RecallVar('user_id'));
}
foreach ($address_fields as $address_field) {
$address_dummy->SetDBField($address_field, $object->GetDBField($address_prefix . $address_field));
}
$address_dummy->MarkAddress($address_prefix, false);
$ret = ($address_id > 0) ? $address_dummy->Update() : $address_dummy->Create();
}
}
/**
* Updates shopping cart content
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnUpdateCart(&$event)
{
$this->Application->HandleEvent($items_event, 'orditems:OnUpdate');
$event->CallSubEvent('OnRecalculateItems');
}
/**
* Updates cart and returns various info in JSON format
*
* @param kEvent $event
*/
function OnUpdateCartJSON(&$event)
{
if ( $this->Application->GetVar('ajax') != 'yes' ) {
return;
}
$object =& $event->getObject();
/* @var $object kDBItem */
// 1. delete given order item by id
$delete_id = $this->Application->GetVar('delete_id');
if ( $delete_id !== false ) {
$sql = 'DELETE FROM ' . TABLE_PREFIX . 'OrderItems
WHERE OrderId = ' . $object->GetID() . ' AND OrderItemId = ' . (int)$delete_id;
$this->Conn->Query($sql);
}
// 2. remove coupon
$remove = $this->Application->GetVar('remove');
if ( $remove == 'coupon' ) {
$this->RemoveCoupon($object);
$object->setCheckoutError(OrderCheckoutErrorType::COUPON, OrderCheckoutError::COUPON_REMOVED);
}
elseif ( $remove == 'gift_certificate' ) {
$this->RemoveGiftCertificate($object);
$object->setCheckoutError(OrderCheckoutErrorType::GIFT_CERTIFICATE, OrderCheckoutError::GC_REMOVED);
}
// 3. update product quantities and recalculate all discounts
$this->Application->HandleEvent($items_event, 'orditems:OnUpdate');
$event->CallSubEvent('OnRecalculateItems');
// 4. remove "orditems" object of kDBItem class, since getOrderInfo uses kDBList object under same prefix
$this->Application->removeObject('orditems');
$order_helper =& $this->Application->recallObject('OrderHelper');
/* @var $order_helper OrderHelper */
$event->status = kEvent::erSTOP;
$currency = $this->Application->GetVar('currency', 'selected');
echo json_encode( $order_helper->getOrderInfo($object, $currency) );
}
/**
* Adds item to cart
*
* @param kEvent $event
*/
function OnAddToCart(&$event)
{
$this->StoreContinueShoppingLink();
$qty = $this->Application->GetVar('qty');
$options = $this->Application->GetVar('options');
// multiple or options add
$items = Array();
if (is_array($qty)) {
foreach ($qty as $item_id => $combinations)
{
if (is_array($combinations)) {
foreach ($combinations as $comb_id => $comb_qty) {
if ($comb_qty == 0) continue;
$items[] = array('item_id' => $item_id, 'qty' => $comb_qty, 'comb' => $comb_id);
}
}
else {
$items[] = array('item_id' => $item_id, 'qty' => $combinations);
}
}
}
if (!$items) {
if (!$qty || is_array($qty)) $qty = 1;
$item_id = $this->Application->GetVar('p_id');
if (!$item_id) return ;
$items = array(array('item_id' => $item_id, 'qty' => $qty));
}
// remember item data passed to event when called
$default_item_data = $event->getEventParam('ItemData');
$default_item_data = $default_item_data ? unserialize($default_item_data) : Array();
foreach ($items as $an_item) {
$item_id = $an_item['item_id'];
$qty = $an_item['qty'];
$comb = getArrayValue($an_item, 'comb');
$item_data = $default_item_data;
$product =& $this->Application->recallObject('p', null, Array('skip_autoload' => true));
/* @var $product ProductsItem */
$product->Load($item_id);
$event->setEventParam('ItemData', null);
if ($product->GetDBField('AssignedCoupon')) {
$item_data['AssignedCoupon'] = $product->GetDBField('AssignedCoupon');
}
// 1. store options information OR
if ($comb) {
$combination = $this->Conn->GetOne('SELECT Combination FROM '.TABLE_PREFIX.'ProductOptionCombinations WHERE CombinationId = '.$comb);
$item_data['Options'] = unserialize($combination);
}
elseif (is_array($options)) {
$item_data['Options'] = $options[$item_id];
}
// 2. store subscription information OR
if( $product->GetDBField('Type') == 2 ) // subscriptions
{
$item_data = $this->BuildSubscriptionItemData($item_id, $item_data);
}
// 3. store package information
if( $product->GetDBField('Type') == 5 ) // package
{
$package_content_ids = $product->GetPackageContentIds();
$product_package_item =& $this->Application->recallObject('p.-packageitem');
/* @var $product_package_item ProductsItem */
$package_item_data = array();
foreach ($package_content_ids as $package_item_id){
$product_package_item->Load($package_item_id);
$package_item_data[$package_item_id] = array();
if( $product_package_item->GetDBField('Type') == 2 ) // subscriptions
{
$package_item_data[$package_item_id] = $this->BuildSubscriptionItemData($package_item_id, $item_data);
}
}
$item_data['PackageContent'] = $product->GetPackageContentIds();
$item_data['PackageItemsItemData'] = $package_item_data;
}
$event->setEventParam('ItemData', serialize($item_data));
// 1 for PacakgeNum when in admin - temporary solution to overcome splitting into separate sub-orders
// of orders with items added through admin when approving them
$this->AddItemToOrder($event, $item_id, $qty, $this->Application->isAdminUser ? 1 : null);
}
if ($event->status == kEvent::erSUCCESS && !$event->redirect) {
$event->SetRedirectParam('pass', 'm');
$event->SetRedirectParam('pass_category', 0); //otherwise mod-rewrite shop-cart URL will include category
$event->redirect = true;
}
else {
if ($this->Application->isAdminUser) {
$event->SetRedirectParam('opener', 'u');
}
}
}
/**
* Check if required options are selected & selected option combination is in stock
*
* @param kEvent $event
* @param Array $options
* @param int $product_id
* @param int $qty
* @param int $selection_mode
* @return bool
*/
function CheckOptions(&$event, &$options, $product_id, $qty, $selection_mode)
{
// 1. check for required options
$selection_filter = $selection_mode == 1 ? ' AND OptionType IN (1,3,6) ' : '';
$req_options = $this->Conn->GetCol('SELECT ProductOptionId FROM '.TABLE_PREFIX.'ProductOptions WHERE ProductId = '.$product_id.' AND Required = 1 '.$selection_filter);
$result = true;
foreach ($req_options as $opt_id) {
if (!getArrayValue($options, $opt_id)) {
$this->Application->SetVar('opt_error', 1); //let the template know we have an error
$result = false;
}
}
// 2. check for option combinations in stock
$comb_salt = $this->OptionsSalt($options, true);
if ($comb_salt) {
// such option combination is defined explicitly
$poc_table = $this->Application->getUnitOption('poc', 'TableName');
$sql = 'SELECT Availability
FROM '.$poc_table.'
WHERE CombinationCRC = '.$comb_salt;
$comb_availble = $this->Conn->GetOne($sql);
// 2.1. check if Availability flag is set, then
if ($comb_availble == 1) {
// 2.2. check for quantity in stock
$table = Array();
$table['poc'] = $this->Application->getUnitOption('poc', 'TableName');
$table['p'] = $this->Application->getUnitOption('p', 'TableName');
$table['oi'] = $this->TablePrefix($event).'OrderItems';
$object =& $event->getObject();
$ord_id = $object->GetID();
// 2.3. check if some amount of same combination & product are not already in shopping cart
$sql = 'SELECT '.
$table['p'].'.InventoryStatus,'.
$table['p'].'.BackOrder,
IF('.$table['p'].'.InventoryStatus = 2, '.$table['poc'].'.QtyInStock, '.$table['p'].'.QtyInStock) AS QtyInStock,
IF('.$table['oi'].'.OrderItemId IS NULL, 0, '.$table['oi'].'.Quantity) AS Quantity
FROM '.$table['p'].'
LEFT JOIN '.$table['poc'].' ON
'.$table['p'].'.ProductId = '.$table['poc'].'.ProductId
LEFT JOIN '.$table['oi'].' ON
('.$table['oi'].'.OrderId = '.$ord_id.') AND
('.$table['oi'].'.OptionsSalt = '.$comb_salt.') AND
('.$table['oi'].'.ProductId = '.$product_id.') AND
('.$table['oi'].'.BackOrderFlag = 0)
WHERE '.$table['poc'].'.CombinationCRC = '.$comb_salt;
$product_info = $this->Conn->GetRow($sql);
if ($product_info['InventoryStatus']) {
$backordering = $this->Application->ConfigValue('Comm_Enable_Backordering');
if (!$backordering || $product_info['BackOrder'] == 0) {
// backordering is not enabled generally or for this product directly, then check quantities in stock
if ($qty + $product_info['Quantity'] > $product_info['QtyInStock']) {
$this->Application->SetVar('opt_error', 2);
$result = false;
}
}
}
}
elseif ($comb_availble !== false) {
$this->Application->SetVar('opt_error', 2);
$result = false;
}
}
if ($result) {
$event->status = kEvent::erSUCCESS;
$event->redirect = $this->Application->isAdminUser ? true : $this->Application->GetVar('shop_cart_template');
}
else {
$event->status = kEvent::erFAIL;
}
return $result;
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnUpdateItemOptions(&$event)
{
$opt_data = $this->Application->GetVar('options');
$options = getArrayValue($opt_data, $this->Application->GetVar('p_id'));
if (!$options) {
$qty_data = $this->Application->GetVar('qty');
$comb_id = key(getArrayValue($qty_data, $this->Application->GetVar('p_id')));
$options = unserialize($this->Conn->GetOne('SELECT Combination FROM '.TABLE_PREFIX.'ProductOptionCombinations WHERE CombinationId = '.$comb_id));
}
if (!$options) return;
$ord_item =& $this->Application->recallObject('orditems.-opt', null, Array ('skip_autoload' => true));
/* @var $ord_item kDBItem */
$ord_item->Load($this->Application->GetVar('orditems_id'));
// assuming that quantity cannot be changed during order item editing
if (!$this->CheckOptions($event, $options, $ord_item->GetDBField('ProductId'), 0, $ord_item->GetDBField('OptionsSelectionMode'))) return;
$item_data = unserialize($ord_item->GetDBField('ItemData'));
$item_data['Options'] = $options;
$ord_item->SetDBField('ItemData', serialize($item_data));
$ord_item->SetDBField('OptionsSalt', $this->OptionsSalt($options));
$ord_item->Update();
$event->CallSubEvent('OnRecalculateItems');
if ($event->status == kEvent::erSUCCESS && $this->Application->isAdminUser) {
$event->SetRedirectParam('opener', 'u');
}
}
function BuildSubscriptionItemData($item_id, $item_data)
{
$products_table = $this->Application->getUnitOption('p', 'TableName');
$products_idfield = $this->Application->getUnitOption('p', 'IDField');
$sql = 'SELECT AccessGroupId FROM %s WHERE %s = %s';
$item_data['PortalGroupId'] = $this->Conn->GetOne( sprintf($sql, $products_table, $products_idfield, $item_id) );
$pricing_table = $this->Application->getUnitOption('pr', 'TableName');
$pricing_idfield = $this->Application->getUnitOption('pr', 'IDField');
/* TODO check on implementation
$sql = 'SELECT AccessDuration, AccessUnit, DurationType, AccessExpiration FROM %s WHERE %s = %s';
*/
$sql = 'SELECT * FROM %s WHERE %s = %s';
$pricing_id = $this->GetPricingId($item_id, $item_data);
$item_data['PricingId'] = $pricing_id;
$pricing_info = $this->Conn->GetRow( sprintf($sql, $pricing_table, $pricing_idfield, $pricing_id ) );
$unit_secs = Array(1 => 1, 2 => 60, 3 => 3600, 4 => 86400, 5 => 604800, 6 => 2592000, 7 => 31536000);
/* TODO check on implementation (code from customization healtheconomics.org)
$item_data['DurationType'] = $pricing_info['DurationType'];
$item_data['AccessExpiration'] = $pricing_info['AccessExpiration'];
*/
$item_data['Duration'] = $pricing_info['AccessDuration'] * $unit_secs[ $pricing_info['AccessUnit'] ];
return $item_data;
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnApplyCoupon(&$event)
{
$code = $this->Application->GetVar('coupon_code');
if ($code == '') {
return ;
}
$object =& $event->getObject();
/* @var $object OrdersItem */
$coupon =& $this->Application->recallObject('coup', null, Array ('skip_autoload' => true));
/* @var $coupon kDBItem */
$coupon->Load($code, 'Code');
if ( !$coupon->isLoaded() ) {
$event->status = kEvent::erFAIL;
$object->setCheckoutError(OrderCheckoutErrorType::COUPON, OrderCheckoutError::COUPON_CODE_INVALID);
$event->redirect = false; // check!!!
return ;
}
$expire_date = $coupon->GetDBField('Expiration');
$number_of_use = $coupon->GetDBField('NumberOfUses');
if ( $coupon->GetDBField('Status') != 1 || ($expire_date && $expire_date < adodb_mktime()) ||
(isset($number_of_use) && $number_of_use <= 0))
{
$event->status = kEvent::erFAIL;
$object->setCheckoutError(OrderCheckoutErrorType::COUPON, OrderCheckoutError::COUPON_CODE_EXPIRED);
$event->redirect = false;
return ;
}
$last_used = adodb_mktime();
$coupon->SetDBField('LastUsedBy', $this->Application->RecallVar('user_id'));
$coupon->SetDBField('LastUsedOn_date', $last_used);
$coupon->SetDBField('LastUsedOn_time', $last_used);
if ( isset($number_of_use) ) {
$coupon->SetDBField('NumberOfUses', $number_of_use - 1);
if ($number_of_use == 1) {
$coupon->SetDBField('Status', 2);
}
}
$coupon->Update();
$this->Application->setUnitOption('ord', 'AutoLoad', true);
$order =& $this->Application->recallObject('ord');
/* @var $order OrdersItem */
$order->SetDBField('CouponId', $coupon->GetDBField('CouponId'));
$order->SetDBField('CouponName', $coupon->GetDBField('Name')); // calculated field
$order->Update();
$object->setCheckoutError(OrderCheckoutErrorType::COUPON, OrderCheckoutError::COUPON_APPLIED);
// OnApplyCoupon is called as hook for OnUpdateCart/OnCheckout, which calls OnRecalcualate themself
}
/**
* Removes coupon from order
*
* @param kEvent $event
* @deprecated
*/
function OnRemoveCoupon(&$event)
{
$object =& $event->getObject();
/* @var $object OrdersItem */
$this->RemoveCoupon($object);
$object->setCheckoutError(OrderCheckoutErrorType::COUPON, OrderCheckoutError::COUPON_REMOVED);
$event->CallSubEvent('OnRecalculateItems');
}
/**
* Removes coupon from a given order
*
* @param OrdersItem $object
*/
function RemoveCoupon(&$object)
{
$coupon =& $this->Application->recallObject('coup', null, Array('skip_autoload' => true));
/* @var $coupon kDBItem */
$coupon->Load( $object->GetDBField('CouponId') );
if ( $coupon->isLoaded() ) {
$coupon->SetDBField('NumberOfUses', $coupon->GetDBField('NumberOfUses') + 1);
$coupon->SetDBField('Status', STATUS_ACTIVE);
$coupon->Update();
}
$object->SetDBField('CouponId', 0);
$object->SetDBField('CouponName', ''); // calculated field
$object->SetDBField('CouponDiscount', 0);
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnAddVirtualProductToCart(&$event)
{
$l_info = $this->Application->GetVar('l');
if($l_info)
{
foreach($l_info as $link_id => $link_info) {}
$item_data['LinkId'] = $link_id;
$item_data['ListingTypeId'] = $link_info['ListingTypeId'];
}
else
{
$link_id = $this->Application->GetVar('l_id');
$sql = 'SELECT ResourceId FROM '.$this->Application->getUnitOption('l', 'TableName').'
WHERE LinkId = '.$link_id;
$sql = 'SELECT ListingTypeId FROM '.$this->Application->getUnitOption('ls', 'TableName').'
WHERE ItemResourceId = '.$this->Conn->GetOne($sql);
$item_data['LinkId'] = $link_id;
$item_data['ListingTypeId'] = $this->Conn->GetOne($sql);
}
$sql = 'SELECT VirtualProductId FROM '.$this->Application->getUnitOption('lst', 'TableName').'
WHERE ListingTypeId = '.$item_data['ListingTypeId'];
$item_id = $this->Conn->GetOne($sql);
$event->setEventParam('ItemData', serialize($item_data));
$this->AddItemToOrder($event, $item_id);
$event->redirect = $this->Application->GetVar('shop_cart_template');
// don't pass unused info to shopping cart, brokes old mod-rewrites
$event->SetRedirectParam('pass', 'm'); // not to pass link id
$event->SetRedirectParam('m_cat_id', 0); // not to pass link id
}
function OnRemoveFromCart(&$event)
{
$ord_item_id = $this->Application->GetVar('orditems_id');
$ord_id = $this->getPassedId($event);
$this->Conn->Query('DELETE FROM '.TABLE_PREFIX.'OrderItems WHERE OrderId = '.$ord_id.' AND OrderItemId = '.$ord_item_id);
$this->OnRecalculateItems($event);
}
function OnCleanupCart(&$event)
{
$object =& $event->getObject();
$sql = 'DELETE FROM '.TABLE_PREFIX.'OrderItems
WHERE OrderId = '.$this->getPassedID($event);
$this->Conn->Query($sql);
$this->RemoveCoupon($object);
$this->RemoveGiftCertificate($object);
$this->OnRecalculateItems($event);
}
/**
* Returns order id from session or last used
*
* @param kEvent $event
* @return int
*/
function getPassedId(&$event)
{
$event->setEventParam('raise_warnings', 0);
$passed = parent::getPassedID($event);
if ($this->Application->isAdminUser) {
// work as usual in admin
return $passed;
}
if ($event->Special == 'last') {
// return last order id (for using on thank you page)
$order_id = $this->Application->RecallVar('front_order_id');
return $order_id > 0 ? $order_id : FAKE_ORDER_ID; // FAKE_ORDER_ID helps to keep parent filter for order items set in "kDBList::linkToParent"
}
$ses_id = $this->Application->RecallVar( $event->getPrefixSpecial(true) . '_id' );
if ($passed && ($passed != $ses_id)) {
// order id given in url doesn't match our current order id
$sql = 'SELECT PortalUserId
FROM ' . TABLE_PREFIX . 'Orders
WHERE OrderId = ' . $passed;
$user_id = $this->Conn->GetOne($sql);
if ($user_id == $this->Application->RecallVar('user_id')) {
// current user is owner of order with given id -> allow him to view order details
return $passed;
}
else {
// current user is not owner of given order -> hacking attempt
$this->Application->SetVar($event->getPrefixSpecial().'_id', 0);
return 0;
}
}
else {
// not passed or equals to ses_id
return $ses_id > 0 ? $ses_id : FAKE_ORDER_ID; // FAKE_ORDER_ID helps to keep parent filter for order items set in "kDBList::linkToParent"
}
return $passed;
}
/**
* Load item if id is available
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function LoadItem(&$event)
{
$id = $this->getPassedID($event);
if ( $id == FAKE_ORDER_ID ) {
// if we already know, that there is no such order,
// then don't run database query, that will confirm that
$object =& $event->getObject();
/* @var $object kDBItem */
$object->Clear($id);
return ;
}
parent::LoadItem($event);
}
/**
* Creates new shopping cart
*
* @param kEvent $event
*/
function _createNewCart(&$event)
{
$object =& $event->getObject( Array('skip_autoload' => true) );
/* @var $object kDBItem */
$this->setNextOrderNumber($event);
$object->SetDBField('Status', ORDER_STATUS_INCOMPLETE);
$object->SetDBField('VisitId', $this->Application->RecallVar('visit_id') );
// get user
if ( $this->Application->LoggedIn() ) {
$user =& $this->Application->recallObject('u.current');
/* @var $user UsersItem */
$user_id = $user->GetID();
$object->SetDBField('BillingEmail', $user->GetDBField('Email'));
}
else {
$user_id = USER_GUEST;
}
$object->SetDBField('PortalUserId', $user_id);
// get affiliate
$affiliate_id = $this->isAffiliate($user_id);
if ( $affiliate_id ) {
$object->SetDBField('AffiliateId', $affiliate_id);
}
else {
$affiliate_storage_method = $this->Application->ConfigValue('Comm_AffiliateStorageMethod');
if ( $affiliate_storage_method == 1 ) {
$object->SetDBField('AffiliateId', (int)$this->Application->RecallVar('affiliate_id'));
}
else {
$object->SetDBField('AffiliateId', (int)$this->Application->GetVar('affiliate_id'));
}
}
// get payment type
$default_type = $this->_getDefaultPaymentType();
if ( $default_type ) {
$object->SetDBField('PaymentType', $default_type);
}
+ // vat setting
+ $object->SetDBField('VATIncluded', $this->Application->ConfigValue('OrderVATIncluded'));
+
$created = $object->Create();
if ( $created ) {
$id = $object->GetID();
$this->Application->SetVar($event->getPrefixSpecial(true) . '_id', $id);
$this->Application->StoreVar($event->getPrefixSpecial(true) . '_id', $id);
$this->Application->Session->SetCookie('shop_cart_cookie', $id, strtotime('+1 month'));
return $id;
}
return 0;
}
/**
* Returns default payment type for order
*
* @return int
*/
function _getDefaultPaymentType()
{
$default_type = $this->Application->siteDomainField('PrimaryPaymentTypeId');
if (!$default_type) {
$sql = 'SELECT PaymentTypeId
FROM ' . TABLE_PREFIX . 'PaymentTypes
WHERE IsPrimary = 1';
$default_type = $this->Conn->GetOne($sql);
}
return $default_type;
}
function StoreContinueShoppingLink()
{
$this->Application->StoreVar('continue_shopping', 'external:'.PROTOCOL.SERVER_NAME.$this->Application->RecallVar('last_url'));
}
/**
* Sets required fields for order, based on current checkout step
* !!! Do not use switch here, since all cases may be on the same form simultaniously
*
* @param kEvent $event
*/
function SetStepRequiredFields(&$event)
{
$order =& $event->getObject();
/* @var $order OrdersItem */
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
/* @var $cs_helper kCountryStatesHelper */
$items_info = $this->Application->GetVar($event->getPrefixSpecial(true));
if ($items_info) {
// updated address available from SUBMIT -> use it
list($id, $field_values) = each($items_info);
}
else {
// no updated address -> use current address
$field_values = Array (
'ShippingCountry' => $order->GetDBField('ShippingCountry'),
'BillingCountry' => $order->GetDBField('BillingCountry'),
'PaymentType' => $order->GetDBField('PaymentType'),
);
}
// shipping address required fields
if ($this->Application->GetVar('check_shipping_address')) {
$has_tangibles = $order->HasTangibleItems();
$req_fields = array('ShippingTo', 'ShippingAddress1', 'ShippingCity', 'ShippingZip', 'ShippingCountry', /*'ShippingPhone',*/ 'BillingEmail');
$order->setRequired($req_fields, $has_tangibles);
$order->setRequired('ShippingState', $cs_helper->CountryHasStates( $field_values['ShippingCountry'] ));
}
// billing address required fields
if ($this->Application->GetVar('check_billing_address')) {
$req_fields = array('BillingTo', 'BillingAddress1', 'BillingCity', 'BillingZip', 'BillingCountry', 'BillingPhone', 'BillingEmail');
$order->setRequired($req_fields);
$order->setRequired('BillingState', $cs_helper->CountryHasStates( $field_values['BillingCountry'] ));
}
$check_cc = $this->Application->GetVar('check_credit_card');
if ( $check_cc && ($field_values['PaymentType'] == $order->GetDBField('PaymentType')) ) {
// cc check required AND payment type was not changed during SUBMIT
if ( $this->Application->isAdminUser ) {
$req_fields = Array (/*'PaymentCardType',*/ 'PaymentAccount', /*'PaymentNameOnCard',*/ 'PaymentCCExpDate');
}
else {
$req_fields = Array (/*'PaymentCardType',*/ 'PaymentAccount', /*'PaymentNameOnCard',*/ 'PaymentCCExpDate', 'PaymentCVV2');
}
$order->setRequired($req_fields);
}
}
/**
* Set's order's user_id to user from session or Guest otherwise
*
* @param kEvent $event
*/
function CheckUser(&$event)
{
if ($this->Application->isAdminUser || defined('GW_NOTIFY')) {
// don't check for user in order while processing payment
// gateways, because they can do cross-domain ssl redirects
return;
}
$order =& $event->getObject();
/* @var $order OrdersItem */
$ses_user = $this->Application->RecallVar('user_id');
if ( $order->GetDBField('PortalUserId') != $ses_user ) {
if ( $ses_user == 0 ) {
$ses_user = USER_GUEST;
}
$order->SetDBField('PortalUserId', $ses_user);
// since CheckUser is called in OnBeforeItemUpdate, we don't need to call udpate here, just set the field
}
}
/* ======================== ADMIN ONLY ======================== */
/**
* Prepare temp tables for creating new item
* but does not create it. Actual create is
* done in OnPreSaveCreated
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnPreCreate(&$event)
{
parent::OnPreCreate($event);
$object =& $event->getObject();
/* @var $object kDBItem */
$this->setNextOrderNumber($event);
$object->SetDBField('OrderIP', $_SERVER['REMOTE_ADDR']);
$order_type = $this->getTypeBySpecial( $this->Application->GetVar('order_type') );
$object->SetDBField('Status', $order_type);
}
/**
* When cloning orders set new order number to them
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeClone(&$event)
{
parent::OnBeforeClone($event);
$object =& $event->getObject();
if (substr($event->Special, 0, 9) == 'recurring') {
$object->SetDBField('SubNumber', $object->getNextSubNumber());
$object->SetDBField('OriginalAmount', 0); // needed in this case ?
}
else {
$this->setNextOrderNumber($event);
$object->SetDBField('OriginalAmount', 0);
}
$object->SetDBField('OrderDate', adodb_mktime());
$object->UpdateFormattersSubFields();
$object->SetDBField('GWResult1', '');
$object->SetDBField('GWResult2', '');
}
function OnReserveItems(&$event)
{
$order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) );
/* @var $order_items kDBList */
$order_items->linkToParent('-inv');
// force re-query, since we are updateing through orditem ITEM, not the list, and
// OnReserveItems may be called 2 times when fullfilling backorders through product edit - first time
// from FullFillBackorders and second time from OnOrderProcess
$order_items->Query(true);
$order_items->GoFirst();
// query all combinations used in this order
$product_object =& $this->Application->recallObject('p', null, Array('skip_autoload' => true));
/* @var $product_object kCatDBItem */
$product_object->SwitchToLive();
$order_item =& $this->Application->recallObject('orditems.-item', null, Array('skip_autoload' => true));
/* @var $order_item kDBItem */
$combination_item =& $this->Application->recallObject('poc.-item', null, Array('skip_autoload' => true));
/* @var $combination_item kDBItem */
$combinations = $this->queryCombinations($order_items);
$event->status = kEvent::erSUCCESS;
while (!$order_items->EOL()) {
$rec = $order_items->getCurrentRecord();
$product_object->Load( $rec['ProductId'] );
if (!$product_object->GetDBField('InventoryStatus')) {
$order_items->GoNext();
continue;
}
$inv_object =& $this->getInventoryObject($product_object, $combination_item, $combinations[ $rec['ProductId'].'_'.$rec['OptionsSalt'] ]);
$lack = $rec['Quantity'] - $rec['QuantityReserved'];
if ($lack > 0) {
// reserve lack or what is available (in case if we need to reserve anything, by Alex)
$to_reserve = min($lack, $inv_object->GetDBField('QtyInStock') - $product_object->GetDBField('QtyInStockMin'));
if ($to_reserve < $lack) $event->status = kEvent::erFAIL; // if we can't reserve the full lack
//reserve in order
$order_item->SetDBFieldsFromHash($rec);
$order_item->SetDBField('QuantityReserved', $rec['QuantityReserved'] + $to_reserve);
$order_item->SetId($rec['OrderItemId']);
$order_item->Update();
//update product - increase reserved, decrease in stock
$inv_object->SetDBField('QtyReserved', $inv_object->GetDBField('QtyReserved') + $to_reserve);
$inv_object->SetDBField('QtyInStock', $inv_object->GetDBField('QtyInStock') - $to_reserve);
$inv_object->SetDBField('QtyBackOrdered', $inv_object->GetDBField('QtyBackOrdered') - $to_reserve);
$inv_object->Update();
if ($product_object->GetDBField('InventoryStatus') == 2) {
// inventory by options, then restore changed combination values back to common $combinations array !!!
$combinations[ $rec['ProductId'].'_'.$rec['OptionsSalt'] ] = $inv_object->GetFieldValues();
}
}
$order_items->GoNext();
}
return true;
}
function OnOrderPrint(&$event)
{
$event->setRedirectParams(Array('opener'=>'s'), true);
}
/**
* Processes order each tab info resetting to other tab info / to user info
*
* @param kEvent $event
* @access public
*/
function OnResetAddress(&$event)
{
$to_tab = $this->Application->GetVar('to_tab');
$from_tab = substr($event->Name, strlen('OnResetTo'));
// load values from db
$object =& $event->getObject();
/* @var $object kDBItem */
// update values from submit
$items_info = $this->Application->GetVar($event->getPrefixSpecial(true));
if ( $items_info ) {
$field_values = array_shift($items_info);
}
$object->SetFieldsFromHash($field_values);
$this->DoResetAddress($object, $from_tab, $to_tab);
$object->Update();
$event->redirect = false;
}
/**
* Processes item selection from popup item selector
*
* @todo Is this called ? (by Alex)
* @param kEvent $event
*/
function OnProcessSelected(&$event)
{
$selected_ids = $this->Application->GetVar('selected_ids');
$product_ids = $selected_ids['p'];
if ($product_ids) {
$product_ids = explode(',', $product_ids);
// !!! LOOK OUT - Adding items to Order in admin is handled in order_ITEMS_event_handler !!!
foreach ($product_ids as $product_id) {
$this->AddItemToOrder($event, $product_id);
}
}
$event->SetRedirectParam('opener', 'u');
}
function OnMassPlaceOrder(&$event)
{
$object =& $event->getObject( Array('skip_autoload' => true) );
$ids = $this->StoreSelectedIDs($event);
if($ids)
{
foreach($ids as $id)
{
$object->Load($id);
$this->DoPlaceOrder($event);
}
}
$event->status = kEvent::erSUCCESS;
}
/**
* Universal
* Checks if QtyInStock is enough to fullfill backorder (Qty - QtyReserved in order)
*
* @param int $ord_id
* @return bool
*/
function ReadyToProcess($ord_id)
{
$poc_table = $this->Application->getUnitOption('poc', 'TableName');
$query = ' SELECT SUM(IF( IF('.TABLE_PREFIX.'Products.InventoryStatus = 2, '.$poc_table.'.QtyInStock, '.TABLE_PREFIX.'Products.QtyInStock) - '.TABLE_PREFIX.'Products.QtyInStockMin >= ('.TABLE_PREFIX.'OrderItems.Quantity - '.TABLE_PREFIX.'OrderItems.QuantityReserved), 0, 1))
FROM '.TABLE_PREFIX.'OrderItems
LEFT JOIN '.TABLE_PREFIX.'Products ON '.TABLE_PREFIX.'Products.ProductId = '.TABLE_PREFIX.'OrderItems.ProductId
LEFT JOIN '.$poc_table.' ON ('.$poc_table.'.CombinationCRC = '.TABLE_PREFIX.'OrderItems.OptionsSalt) AND ('.$poc_table.'.ProductId = '.TABLE_PREFIX.'OrderItems.ProductId)
WHERE OrderId = '.$ord_id.'
GROUP BY OrderId';
// IF (IF(InventoryStatus = 2, poc.QtyInStock, p.QtyInStock) - QtyInStockMin >= (Quantity - QuantityReserved), 0, 1
return ($this->Conn->GetOne($query) == 0);
}
/**
* Return all option combinations used in order
*
* @param kDBList $order_items
* @return Array
*/
function queryCombinations(&$order_items)
{
// 1. collect combination crc used in order
$combinations = Array();
while (!$order_items->EOL()) {
$row = $order_items->getCurrentRecord();
if ($row['OptionsSalt'] == 0) {
$order_items->GoNext();
continue;
}
$combinations[] = '(poc.ProductId = '.$row['ProductId'].') AND (poc.CombinationCRC = '.$row['OptionsSalt'].')';
$order_items->GoNext();
}
$order_items->GoFirst();
$combinations = array_unique($combinations); // if same combination+product found as backorder & normal order item
if ($combinations) {
// 2. query data about combinations
$poc_table = $this->Application->getUnitOption('poc', 'TableName');
$sql = 'SELECT CONCAT(poc.ProductId, "_", poc.CombinationCRC) AS CombinationKey, poc.*
FROM '.$poc_table.' poc
WHERE ('.implode(') OR (', $combinations).')';
return $this->Conn->Query($sql, 'CombinationKey');
}
return Array();
}
/**
* Returns object to perform inventory actions on
*
* @param ProductsItem $product current product object in order
* @param kDBItem $combination combination dummy object
* @param Array $combination_data pre-queried combination data
* @return kDBItem
*/
function &getInventoryObject(&$product, &$combination, $combination_data)
{
if ($product->GetDBField('InventoryStatus') == 2) {
// inventory by option combinations
$combination->SetDBFieldsFromHash($combination_data);
$combination->setID($combination_data['CombinationId']);
$change_item =& $combination;
}
else {
// inventory by product ifself
$change_item =& $product;
}
return $change_item;
}
/**
* Approve order ("Pending" tab)
*
* @param kDBList $order_items
* @return int new status of order if any
*/
function approveOrder(&$order_items)
{
$product_object =& $this->Application->recallObject('p', null, Array('skip_autoload' => true));
$order_item =& $this->Application->recallObject('orditems.-item', null, Array('skip_autoload' => true));
$combination_item =& $this->Application->recallObject('poc.-item', null, Array('skip_autoload' => true));
$combinations = $this->queryCombinations($order_items);
while (!$order_items->EOL()) {
$rec = $order_items->getCurrentRecord();
$order_item->SetDBFieldsFromHash($rec);
$order_item->SetId($rec['OrderItemId']);
$order_item->SetDBField('QuantityReserved', 0);
$order_item->Update();
$product_object->Load( $rec['ProductId'] );
if (!$product_object->GetDBField('InventoryStatus')) {
// if no inventory info is collected, then skip this order item
$order_items->GoNext();
continue;
}
$inv_object =& $this->getInventoryObject($product_object, $combination_item, $combinations[ $rec['ProductId'].'_'.$rec['OptionsSalt'] ]);
// decrease QtyReserved by amount of product used in order
$inv_object->SetDBField('QtyReserved', $inv_object->GetDBField('QtyReserved') - $rec['Quantity']);
$inv_object->Update();
if ($product_object->GetDBField('InventoryStatus') == 2) {
// inventory by options, then restore changed combination values back to common $combinations array !!!
$combinations[ $rec['ProductId'].'_'.$rec['OptionsSalt'] ] = $inv_object->GetFieldValues();
}
$order_items->GoNext();
}
return true;
}
/**
* Restores reserved items in the order
*
* @param kDBList $order_items
* @return bool
*/
function restoreOrder(&$order_items)
{
$product_object =& $this->Application->recallObject('p', null, Array('skip_autoload' => true));
/* @var $product_object kCatDBItem */
$product_object->SwitchToLive();
$order_item =& $this->Application->recallObject('orditems.-item', null, Array('skip_autoload' => true));
/* @var $order_item kDBItem */
$combination_item =& $this->Application->recallObject('poc.-item', null, Array('skip_autoload' => true));
/* @var $combination_item kDBItem */
$combinations = $this->queryCombinations($order_items);
while( !$order_items->EOL() )
{
$rec = $order_items->getCurrentRecord();
$product_object->Load( $rec['ProductId'] );
if (!$product_object->GetDBField('InventoryStatus')) {
// if no inventory info is collected, then skip this order item
$order_items->GoNext();
continue;
}
$inv_object =& $this->getInventoryObject($product_object, $combination_item, $combinations[ $rec['ProductId'].'_'.$rec['OptionsSalt'] ]);
// cancelling backorderd qty if any
$lack = $rec['Quantity'] - $rec['QuantityReserved'];
if ($lack > 0 && $rec['BackOrderFlag'] > 0) { // lack should have been recorded as QtyBackOrdered
$inv_object->SetDBField('QtyBackOrdered', $inv_object->GetDBField('QtyBackOrdered') - $lack);
}
// canceling reservation in stock
$inv_object->SetDBField('QtyReserved', $inv_object->GetDBField('QtyReserved') - $rec['QuantityReserved']);
// putting remaining freed qty back to stock
$inv_object->SetDBField('QtyInStock', $inv_object->GetDBField('QtyInStock') + $rec['QuantityReserved']);
$inv_object->Update();
$product_h =& $this->Application->recallObject('p_EventHandler');
/* @var $product_h ProductsEventHandler */
if ($product_object->GetDBField('InventoryStatus') == 2) {
// inventory by options, then restore changed combination values back to common $combinations array !!!
$combinations[ $rec['ProductId'].'_'.$rec['OptionsSalt'] ] = $inv_object->GetFieldValues();
// using freed qty to fulfill possible backorders
$product_h->FullfillBackOrders($product_object, $inv_object->GetID());
}
else {
// using freed qty to fulfill possible backorders
$product_h->FullfillBackOrders($product_object, 0);
}
$order_item->SetDBFieldsFromHash($rec);
$order_item->SetId($rec['OrderItemId']);
$order_item->SetDBField('QuantityReserved', 0);
$order_item->Update();
$order_items->GoNext();
}
return true;
}
/**
* Approve order + special processing
*
* @param kEvent $event
*/
function MassInventoryAction(&$event)
{
if ( $this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1) ) {
$event->status = kEvent::erFAIL;
return;
}
// process order products
$object =& $this->Application->recallObject($event->Prefix . '.-inv', null, Array ('skip_autoload' => true));
/* @var $object kDBItem */
$ids = $this->StoreSelectedIDs($event);
if ( $ids ) {
foreach ($ids as $id) {
$object->Load($id);
$this->InventoryAction($event);
}
}
}
function InventoryAction(&$event)
{
if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) {
$event->status = kEvent::erFAIL;
return;
}
$event_status_map = Array(
'OnMassOrderApprove' => ORDER_STATUS_TOSHIP,
'OnOrderApprove' => ORDER_STATUS_TOSHIP,
'OnMassOrderDeny' => ORDER_STATUS_DENIED,
'OnOrderDeny' => ORDER_STATUS_DENIED,
'OnMassOrderArchive' => ORDER_STATUS_ARCHIVED,
'OnOrderArchive' => ORDER_STATUS_ARCHIVED,
'OnMassOrderShip' => ORDER_STATUS_PROCESSED,
'OnOrderShip' => ORDER_STATUS_PROCESSED,
'OnMassOrderProcess' => ORDER_STATUS_TOSHIP,
'OnOrderProcess' => ORDER_STATUS_TOSHIP,
);
$order_items =& $this->Application->recallObject('orditems.-inv','orditems_List',Array('skip_counting'=>true,'per_page'=>-1) );
/* @var $order_items kDBList */
$order_items->linkToParent('-inv');
$order_items->Query();
$order_items->GoFirst();
$object =& $this->Application->recallObject($event->Prefix.'.-inv');
/* @var $object OrdersItem */
if ($object->GetDBField('OnHold')) {
// any actions have no effect while on hold
return ;
}
// save original order status
$original_order_status = $object->GetDBField('Status');
// preparing new status, but not setting it yet
$object->SetDBField('Status', $event_status_map[$event->Name]);
$set_new_status = false;
$event->status = kEvent::erSUCCESS;
$email_params = $this->OrderEmailParams($object);
switch ($event->Name) {
case 'OnMassOrderApprove':
case 'OnOrderApprove':
$set_new_status = false; //on successful approve order will be split and new orders will have new statuses
if ($object->GetDBField('ChargeOnNextApprove')) {
$charge_info = $this->ChargeOrder($object);
if (!$charge_info['result']) {
break;
}
// removing ChargeOnNextApprove
$object->SetDBField('ChargeOnNextApprove', 0);
$sql = 'UPDATE '.$object->TableName.' SET ChargeOnNextApprove = 0 WHERE '.$object->IDField.' = '.$object->GetID();
$this->Conn->Query($sql);
}
// charge user for order in case if we user 2step charging (e.g. AUTH_ONLY + PRIOR_AUTH_CAPTURE)
$gw_data = $object->getGatewayData();
$this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
$gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
/* @var $gateway_object kGWBase */
$charge_result = $gateway_object->Charge($object->GetFieldValues(), $gw_data['gw_params']);
$sql = 'UPDATE %s SET GWResult2 = %s WHERE %s = %s';
$sql = sprintf($sql, $object->TableName, $this->Conn->qstr($gateway_object->getGWResponce()), $object->IDField, $object->GetID() );
$this->Conn->Query($sql);
$object->SetDBField('GWResult2', $gateway_object->getGWResponce() );
if ($charge_result) {
$product_object =& $this->Application->recallObject('p', null, Array('skip_autoload' => true));
/* @var $product_object ProductsItem */
foreach ($order_items->Records as $product_item) {
if (!$product_item['ProductId']) {
// product may have been deleted
continue;
}
$product_object->Load($product_item['ProductId']);
$hits = floor( $product_object->GetDBField('Hits') ) + 1;
$sql = 'SELECT MAX(Hits) FROM '.$this->Application->getUnitOption('p', 'TableName').'
WHERE FLOOR(Hits) = '.$hits;
$hits = ( $res = $this->Conn->GetOne($sql) ) ? $res + 0.000001 : $hits;
$product_object->SetDBField('Hits', $hits);
$product_object->Update();
/*$sql = 'UPDATE '.$this->Application->getUnitOption('p', 'TableName').'
SET Hits = Hits + '.$product_item['Quantity'].'
WHERE ProductId = '.$product_item['ProductId'];
$this->Conn->Query($sql);*/
}
$this->PrepareCoupons($event, $object);
$this->SplitOrder($event, $object);
if ($object->GetDBField('IsRecurringBilling') != 1) {
$this->Application->EmailEventUser('ORDER.APPROVE', $object->GetDBField('PortalUserId'), $email_params);
// Mask credit card with XXXX
if ($this->Application->ConfigValue('Comm_MaskProcessedCreditCards')) {
$this->maskCreditCard($object, 'PaymentAccount');
$set_new_status = 1;
}
}
}
break;
case 'OnMassOrderDeny':
case 'OnOrderDeny':
foreach ($order_items->Records as $product_item) {
if (!$product_item['ProductId']) {
// product may have been deleted
continue;
}
$this->raiseProductEvent('Deny', $product_item['ProductId'], $product_item);
}
if ( ($original_order_status != ORDER_STATUS_INCOMPLETE ) && ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') ) {
$this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params);
// inform payment gateway that order was declined
$gw_data = $object->getGatewayData();
if ( $gw_data ) {
$this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH . '/' . $gw_data['ClassFile'] );
$gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
$gateway_object->OrderDeclined($object->GetFieldValues(), $gw_data['gw_params']);
}
}
// !!! LOOK HERE !!!
// !!!! no break !!!! here on purpose!!!
case 'OnMassOrderArchive':
case 'OnOrderArchive':
// it's critical to update status BEFORE processing items because
// FullfillBackorders could be called during processing and in case
// of order denial/archive fullfill could reserve the qtys back for current backorder
$object->Update();
$this->restoreOrder($order_items);
$set_new_status = false; // already set
break;
case 'OnMassOrderShip':
case 'OnOrderShip':
$ret = Array ();
$shipping_info = $object->GetDBField('ShippingInfo');
if ($shipping_info) {
$quote_engine_collector =& $this->Application->recallObject('ShippingQuoteCollector');
/* @var $quote_engine_collector ShippingQuoteCollector */
$shipping_info = unserialize($shipping_info);
$sqe_class_name = $quote_engine_collector->GetClassByType($shipping_info, 1);
}
// try to create usps order
if (($object->GetDBField('ShippingType') == 0) && ($sqe_class_name !== false)) {
$shipping_quote_engine =& $this->Application->recallObject($sqe_class_name);
/* @var $shipping_quote_engine ShippingQuoteEngine */
$ret = $shipping_quote_engine->MakeOrder($object);
}
if ( !array_key_exists('error_number', $ret) ) {
$set_new_status = $this->approveOrder($order_items);
// $set_new_status = $this->shipOrder($order_items);
$object->SetDBField('ShippingDate', adodb_mktime());
$object->UpdateFormattersSubFields();
$shipping_email = $object->GetDBField('ShippingEmail');
$email_params['to_email'] = $shipping_email ? $shipping_email : $email_params['_user_email'];
$email_event_user =& $this->Application->EmailEventUser('ORDER.SHIP', $object->GetDBField('PortalUserId'), $email_params);
// inform payment gateway that order was shipped
$gw_data = $object->getGatewayData();
$this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
$gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
$gateway_object->OrderShipped($object->GetFieldValues(), $gw_data['gw_params']);
}
else {
$sqe_errors = $this->Application->RecallVar('sqe_errors');
$sqe_errors = $sqe_errors ? unserialize($sqe_errors) : Array ();
$sqe_errors[ $object->GetField('OrderNumber') ] = $ret['error_description'];
$this->Application->StoreVar('sqe_errors', serialize($sqe_errors));
}
break;
case 'OnMassOrderProcess':
case 'OnOrderProcess':
if ($this->ReadyToProcess($object->GetID())) {
$event->CallSubEvent('OnReserveItems');
if ($event->status == kEvent::erSUCCESS) $set_new_status = true;
$email_event_user =& $this->Application->EmailEventUser('BACKORDER.PROCESS', $object->GetDBField('PortalUserId'), $email_params);
} else {
$event->status = kEvent::erFAIL;
}
break;
}
if ($set_new_status) {
$object->Update();
}
}
/**
* Hides last 4 digits from credit card number
*
* @param OrdersItem $object
* @param string $field
*/
function maskCreditCard(&$object, $field)
{
$value = $object->GetDBField($field);
$value = preg_replace('/'.substr($value, -4).'$/', str_repeat('X', 4), $value);
$object->SetDBField($field, $value);
}
/**
* Set next available order number
*
* @param kEvent $event
*/
function setNextOrderNumber(&$event)
{
$object =& $event->getObject();
/* @var $object OrdersItem */
$sql = 'SELECT MAX(Number)
FROM ' . $this->Application->GetLiveName($object->TableName);
$next_order_number = $this->Conn->GetOne($sql) + 1;
$next_order_number = max($next_order_number, $this->Application->ConfigValue('Comm_Next_Order_Number'));
$this->Application->SetConfigValue('Comm_Next_Order_Number', $next_order_number + 1);
$object->SetDBField('Number', $next_order_number);
$object->SetDBField('SubNumber', 0);
// set virtual field too
$number_format = (int)$this->Application->ConfigValue('Comm_Order_Number_Format_P');
$sub_number_format = (int)$this->Application->ConfigValue('Comm_Order_Number_Format_S');
$order_number = sprintf('%0' . $number_format . 'd', $next_order_number) . '-' . str_repeat('0', $sub_number_format);
$object->SetDBField('OrderNumber', $order_number);
}
/**
* Set's new order address based on another address from order (e.g. billing from shipping)
*
* @param unknown_type $object
* @param unknown_type $from
* @param unknown_type $to
*/
function DoResetAddress(&$object, $from, $to)
{
$fields = Array('To','Company','Phone','Fax','Email','Address1','Address2','City','State','Zip','Country');
if ($from == 'User') {
// skip theese fields when coping from user, because they are not present in user profile
$tmp_fields = array_flip($fields);
// unset($tmp_fields['Company'], $tmp_fields['Fax'], $tmp_fields['Address2']);
$fields = array_flip($tmp_fields);
}
// apply modification
foreach ($fields as $field_name) {
$object->SetDBField($to.$field_name, $object->GetDBField($from.$field_name));
}
}
/**
* Set's additional view filters set from "Orders" => "Search" tab
*
* @param kEvent $event
*/
function AddFilters(&$event)
{
parent::AddFilters($event);
if($event->Special != 'search') return true;
$search_filter = $this->Application->RecallVar('ord.search_search_filter');
if(!$search_filter) return false;
$search_filter = unserialize($search_filter);
$event->setPseudoClass('_List');
$object =& $event->getObject();
foreach($search_filter as $filter_name => $filter_params)
{
$filter_type = $filter_params['type'] == 'where' ? kDBList::WHERE_FILTER : kDBList::HAVING_FILTER;
$object->addFilter($filter_name, $filter_params['value'], $filter_type, kDBList::FLT_VIEW);
}
}
/**
* Set's status incomplete to all cloned orders
*
* @param kEvent $event
*/
function OnAfterClone(&$event)
{
$id = $event->getEventParam('id');
$table = $this->Application->getUnitOption($event->Prefix,'TableName');
$id_field = $this->Application->getUnitOption($event->Prefix,'IDField');
// set cloned order status to Incomplete
$sql = 'UPDATE '.$table.' SET Status = 0 WHERE '.$id_field.' = '.$id;
$this->Conn->Query($sql);
}
/* ======================== COMMON CODE ======================== */
/**
* Split one timestamp field into 2 virtual fields
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterItemLoad(&$event)
{
parent::OnAfterItemLoad($event);
$object =& $event->getObject();
/* @var $object kDBItem */
// get user fields
$user_id = $object->GetDBField('PortalUserId');
if ( $user_id ) {
$user_info = $this->Conn->GetRow('SELECT *, CONCAT(FirstName,\' \',LastName) AS UserTo FROM '.TABLE_PREFIX.'PortalUser WHERE PortalUserId = '.$user_id);
$fields = Array(
'UserTo'=>'UserTo','UserPhone'=>'Phone','UserFax'=>'Fax','UserEmail'=>'Email',
'UserAddress1'=>'Street','UserAddress2'=>'Street2','UserCity'=>'City','UserState'=>'State',
'UserZip'=>'Zip','UserCountry'=>'Country','UserCompany'=>'Company'
);
foreach ($fields as $object_field => $user_field) {
$object->SetDBField($object_field, $user_info[$user_field]);
}
}
$object->SetDBField('PaymentCVV2', $this->Application->RecallVar('CVV2Code'));
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
/* @var $cs_helper kCountryStatesHelper */
$cs_helper->PopulateStates($event, 'ShippingState', 'ShippingCountry');
$cs_helper->PopulateStates($event, 'BillingState', 'BillingCountry');
$this->SetStepRequiredFields($event);
// needed in OnAfterItemUpdate
$this->Application->SetVar('OriginalShippingOption', $object->GetDBField('ShippingOption'));
}
/**
* Processes states
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemCreate(&$event)
{
parent::OnBeforeItemCreate($event);
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
/* @var $cs_helper kCountryStatesHelper */
$cs_helper->PopulateStates($event, 'ShippingState', 'ShippingCountry');
$cs_helper->PopulateStates($event, 'BillingState', 'BillingCountry');
}
/**
* Processes states
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemUpdate(&$event)
{
parent::OnBeforeItemUpdate($event);
$object =& $event->getObject();
/* @var $object OrdersItem */
$old_payment_type = $object->GetOriginalField('PaymentType');
$new_payment_type = $object->GetDBField('PaymentType');
if ( $new_payment_type != $old_payment_type ) {
// payment type changed -> check that it's allowed
$available_payment_types = $this->Application->siteDomainField('PaymentTypes');
if ( $available_payment_types ) {
if ( strpos($available_payment_types, '|' . $new_payment_type . '|') === false ) {
// payment type isn't allowed in site domain
$object->SetDBField('PaymentType', $old_payment_type);
}
}
}
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
/* @var $cs_helper kCountryStatesHelper */
$cs_helper->PopulateStates($event, 'ShippingState', 'ShippingCountry');
$cs_helper->PopulateStates($event, 'BillingState', 'BillingCountry');
if ( $object->HasTangibleItems() ) {
$cs_helper->CheckStateField($event, 'ShippingState', 'ShippingCountry', false);
}
$cs_helper->CheckStateField($event, 'BillingState', 'BillingCountry', false);
if ( $object->GetDBField('Status') > ORDER_STATUS_PENDING ) {
return ;
}
$this->CheckUser($event);
if ( !$object->GetDBField('OrderIP') ) {
$object->SetDBField('OrderIP', $_SERVER['REMOTE_ADDR']);
}
$shipping_option = $this->Application->GetVar('OriginalShippingOption');
$new_shipping_option = $object->GetDBField('ShippingOption');
if ( $shipping_option != $new_shipping_option ) {
$this->UpdateShippingOption($event);
}
else {
$this->UpdateShippingTypes($event);
}
$this->RecalculateProcessingFee($event);
$this->UpdateShippingTotal($event);
$this->RecalculateGift($event);
// guess fields from "One Step Checkout" form
if ( $object->GetDBField('PaymentAccount') ) {
$order_helper =& $this->Application->recallObject('OrderHelper');
/* @var $order_helper OrderHelper */
$object->SetDBField('PaymentCardType', $order_helper->getCreditCartType($object->GetDBField('PaymentAccount')));
}
else {
$object->SetDBField('PaymentCardType', '');
}
if ( !$object->GetDBField('PaymentNameOnCard') ) {
$object->SetDBField('PaymentNameOnCard', $object->GetDBField('BillingTo'));
}
if ( $event->MasterEvent->Name == 'OnUpdateAjax' && $this->Application->GetVar('create_account') && $object->Validate() ) {
$this->createAccountFromOrder($event);
}
}
/**
* Creates user account
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function createAccountFromOrder(&$event)
{
$order =& $event->getObject();
/* @var $order OrdersItem */
$order_helper =& $this->Application->recallObject('OrderHelper');
/* @var $order_helper OrderHelper */
$user_fields = $order_helper->getUserFields($order);
$user_fields['Password'] = $order->GetDBField('UserPassword_plain');
$user_fields['VerifyPassword'] = $order->GetDBField('VerifyUserPassword_plain');
if ( $order->GetDBField('PortalUserId') == USER_GUEST ) {
// will also auto-login user when created
$this->Application->SetVar('u_register', Array (USER_GUEST => $user_fields));
$user_event = new kEvent('u.register:OnCreate');
$this->Application->HandleEvent($user_event);
}
else {
$user =& $this->Application->recallObject('u.current');
/* @var $user UsersItem */
$user->SetFieldsFromHash($user_fields);
if ( !$user->Update() ) {
$order->SetError('BillingEmail', $user->GetErrorPseudo('Email'));
}
}
}
/**
* Apply any custom changes to list's sql query
*
* @param kEvent $event
* @return void
* @access protected
* @see kDBEventHandler::OnListBuild()
*/
protected function SetCustomQuery(&$event)
{
$object =& $event->getObject();
/* @var $object kDBList */
$types = $event->getEventParam('types');
if($types == 'myorders' || $types == 'myrecentorders')
{
$user_id = $this->Application->RecallVar('user_id');
$object->addFilter('myitems_user1','%1$s.PortalUserId = '.$user_id);
$object->addFilter('myitems_user2','%1$s.PortalUserId > 0');
$object->addFilter('Status','%1$s.Status != 0');
}
else if ($event->Special == 'returns') {
// $object->addFilter('returns_filter',TABLE_PREFIX.'Orders.Status = '.ORDER_STATUS_PROCESSED.' AND (
// SELECT SUM(ReturnType)
// FROM '.TABLE_PREFIX.'OrderItems oi
// WHERE oi.OrderId = '.TABLE_PREFIX.'Orders.OrderId
// ) > 0');
$object->addFilter('returns_filter',TABLE_PREFIX.'Orders.Status = '.ORDER_STATUS_PROCESSED.' AND '.TABLE_PREFIX.'Orders.ReturnTotal > 0');
}
else if ($event->Special == 'user') {
$user_id = $this->Application->GetVar('u_id');
$object->addFilter('user_filter','%1$s.PortalUserId = '.$user_id);
}
else {
$special = $event->Special ? $event->Special : $this->Application->GetVar('order_type');
if ($special != 'search') {
// don't filter out orders by special in case of search tab
$object->addFilter( 'status_filter', '%1$s.Status='.$this->getTypeBySpecial($special) );
}
if ( $event->getEventParam('selected_only') ) {
$ids = $this->StoreSelectedIDs($event);
$object->addFilter( 'selected_filter', '%1$s.OrderId IN ('.implode(',', $ids).')');
}
}
}
function getTypeBySpecial($special)
{
$special2type = Array('incomplete'=>0,'pending'=>1,'backorders'=>2,'toship'=>3,'processed'=>4,'denied'=>5,'archived'=>6);
return $special2type[$special];
}
function getSpecialByType($type)
{
$type2special = Array(0=>'incomplete',1=>'pending',2=>'backorders',3=>'toship',4=>'processed',5=>'denied',6=>'archived');
return $type2special[$type];
}
function LockTables(&$event)
{
$read = Array();
$write_lock = '';
$read_lock = '';
$write = Array('Orders','OrderItems','Products');
foreach ($write as $tbl) {
$write_lock .= TABLE_PREFIX.$tbl.' WRITE,';
}
foreach ($read as $tbl) {
$read_lock .= TABLE_PREFIX.$tbl.' READ,';
}
$write_lock = rtrim($write_lock, ',');
$read_lock = rtrim($read_lock, ',');
$lock = trim($read_lock.','.$write_lock, ',');
//$this->Conn->Query('LOCK TABLES '.$lock);
}
/**
* Checks shopping cart products quantities
*
* @param kEvent $event
* @return bool
*/
function CheckQuantites(&$event)
{
if ( $this->OnRecalculateItems($event) ) { // if something has changed in the order
if ( $this->Application->isAdminUser ) {
if ( $this->UseTempTables($event) ) {
$event->redirect = 'in-commerce/orders/orders_edit_items';
}
}
else {
$event->redirect = $this->Application->GetVar('viewcart_template');
}
return false;
}
return true;
}
function DoPlaceOrder(&$event)
{
$order =& $event->getObject();
$table_prefix = $this->TablePrefix($event);
$this->LockTables($event);
if (!$this->CheckQuantites($event)) return false;
//everything is fine - we could reserve items
$this->ReserveItems($event);
$this->SplitOrder($event, $order);
return true;
}
function &queryOrderItems(&$event, $table_prefix)
{
$order =& $event->getObject();
$ord_id = $order->GetId();
// TABLE_PREFIX and $table_prefix are NOT the same !!!
$poc_table = $this->Application->getUnitOption('poc', 'TableName');
$query = ' SELECT
BackOrderFlag, '.
$table_prefix.'OrderItems.OrderItemId, '.
$table_prefix.'OrderItems.Quantity, '.
$table_prefix.'OrderItems.QuantityReserved,
IF('.TABLE_PREFIX.'Products.InventoryStatus = 2, '.$poc_table.'.QtyInStock, '.TABLE_PREFIX.'Products.QtyInStock) AS QtyInStock, '.
TABLE_PREFIX.'Products.QtyInStockMin, '.
$table_prefix.'OrderItems.ProductId, '.
TABLE_PREFIX.'Products.InventoryStatus,'.
$table_prefix.'OrderItems.OptionsSalt AS CombinationCRC
FROM '.$table_prefix.'OrderItems
LEFT JOIN '.TABLE_PREFIX.'Products ON '.TABLE_PREFIX.'Products.ProductId = '.$table_prefix.'OrderItems.ProductId
LEFT JOIN '.$poc_table.' ON ('.$poc_table.'.CombinationCRC = '.$table_prefix.'OrderItems.OptionsSalt) AND ('.$poc_table.'.ProductId = '.$table_prefix.'OrderItems.ProductId)
WHERE OrderId = '.$ord_id.' AND '.TABLE_PREFIX.'Products.Type = 1
ORDER BY BackOrderFlag ASC';
$items = $this->Conn->Query($query);
return $items;
}
function ReserveItems(&$event)
{
$table_prefix = $this->TablePrefix($event);
$items =& $this->queryOrderItems($event, $table_prefix);
foreach ($items as $an_item) {
if (!$an_item['InventoryStatus']) {
$to_reserve = $an_item['Quantity'] - $an_item['QuantityReserved'];
}
else {
if ($an_item['BackOrderFlag'] > 0) { // we don't need to reserve if it's backordered item
$to_reserve = 0;
}
else {
$to_reserve = min($an_item['Quantity']-$an_item['QuantityReserved'], $an_item['QtyInStock']-$an_item['QtyInStockMin']); //it should be equal, but just in case
}
$to_backorder = $an_item['BackOrderFlag'] > 0 ? $an_item['Quantity']-$an_item['QuantityReserved'] : 0;
}
if ($to_backorder < 0) $to_backorder = 0; //just in case
$query = ' UPDATE '.$table_prefix.'OrderItems
SET QuantityReserved = IF(QuantityReserved IS NULL, '.$to_reserve.', QuantityReserved + '.$to_reserve.')
WHERE OrderItemId = '.$an_item['OrderItemId'];
$this->Conn->Query($query);
if (!$an_item['InventoryStatus']) continue;
$update_clause = ' QtyInStock = QtyInStock - '.$to_reserve.',
QtyReserved = QtyReserved + '.$to_reserve.',
QtyBackOrdered = QtyBackOrdered + '.$to_backorder;
if ($an_item['InventoryStatus'] == 1) {
// inventory by product, then update it's quantities
$query = ' UPDATE '.TABLE_PREFIX.'Products
SET '.$update_clause.'
WHERE ProductId = '.$an_item['ProductId'];
}
else {
// inventory = 2 -> by product option combinations
$poc_idfield = $this->Application->getUnitOption('poc', 'IDField');
$poc_table = $this->Application->getUnitOption('poc', 'TableName');
$query = ' UPDATE '.$poc_table.'
SET '.$update_clause.'
WHERE (ProductId = '.$an_item['ProductId'].') AND (CombinationCRC = '.$an_item['CombinationCRC'].')';
}
$this->Conn->Query($query);
}
}
function FreeItems(&$event)
{
$table_prefix = $this->TablePrefix($event);
$items =& $this->queryOrderItems($event, $table_prefix);
foreach ($items as $an_item) {
$to_free = $an_item['QuantityReserved'];
if ($an_item['InventoryStatus']) {
if ($an_item['BackOrderFlag'] > 0) { // we don't need to free if it's backordered item
$to_free = 0;
}
// what's not reserved goes to backorder in stock for orderitems marked with BackOrderFlag
$to_backorder_free = $an_item['BackOrderFlag'] > 0 ? $an_item['Quantity'] - $an_item['QuantityReserved'] : 0;
if ($to_backorder_free < 0) $to_backorder_free = 0; //just in case
$update_clause = ' QtyInStock = QtyInStock + '.$to_free.',
QtyReserved = QtyReserved - '.$to_free.',
QtyBackOrdered = QtyBackOrdered - '.$to_backorder_free;
if ($an_item['InventoryStatus'] == 1) {
// inventory by product
$query = ' UPDATE '.TABLE_PREFIX.'Products
SET '.$update_clause.'
WHERE ProductId = '.$an_item['ProductId'];
}
else {
// inventory by option combinations
$poc_idfield = $this->Application->getUnitOption('poc', 'IDField');
$poc_table = $this->Application->getUnitOption('poc', 'TableName');
$query = ' UPDATE '.$poc_table.'
SET '.$update_clause.'
WHERE (ProductId = '.$an_item['ProductId'].') AND (CombinationCRC = '.$an_item['CombinationCRC'].')';
}
$this->Conn->Query($query);
}
$query = ' UPDATE '.$table_prefix.'OrderItems
SET QuantityReserved = IF(QuantityReserved IS NULL, 0, QuantityReserved - '.$to_free.')
WHERE OrderItemId = '.$an_item['OrderItemId'];
$this->Conn->Query($query);
}
}
/**
* Enter description here...
*
* @param kEvent $event
* @param OrdersItem $object
*/
function SplitOrder(&$event, &$object)
{
$affiliate_event = new kEvent('affil:OnOrderApprove');
$affiliate_event->setEventParam('Order_PrefixSpecial', $object->getPrefixSpecial() );
$this->Application->HandleEvent($affiliate_event);
$table_prefix = $this->TablePrefix($event);
$order =& $object;
$ord_id = $order->GetId();
$shipping_option = $order->GetDBField('ShippingOption');
$backorder_select = $shipping_option == 0 ? '0' : 'oi.BackOrderFlag';
// setting PackageNum to 0 for Non-tangible items, for tangibles first package num is always 1
$query = ' SELECT oi.OrderItemId
FROM ' . $table_prefix . 'OrderItems oi
LEFT JOIN ' . TABLE_PREFIX . 'Products p ON p.ProductId = oi.ProductId
WHERE p.Type > 1 AND oi.OrderId = ' . $ord_id;
$non_tangibles = $this->Conn->GetCol($query);
if ($non_tangibles) {
$query = ' UPDATE ' . $table_prefix . 'OrderItems
SET PackageNum = 0
WHERE OrderItemId IN (' . implode(',', $non_tangibles) . ')';
$this->Conn->Query($query);
}
// grouping_data:
// 0 => Product Type
// 1 => if NOT tangibale and NOT downloadable - OrderItemId,
// 2 => ProductId
// 3 => Shipping PackageNum
$query = 'SELECT
'.$backorder_select.' AS BackOrderFlagCalc,
PackageNum,
ProductName,
ShippingTypeId,
CONCAT('.TABLE_PREFIX.'Products.Type,
"_",
IF ('.TABLE_PREFIX.'Products.Type NOT IN ('.PRODUCT_TYPE_DOWNLOADABLE.','.PRODUCT_TYPE_TANGIBLE.'),
CONCAT(OrderItemId, "_", '.TABLE_PREFIX.'Products.ProductId),
""),
"_",
PackageNum
) AS Grouping,
SUM(Quantity) AS TotalItems,
SUM('.$table_prefix.'OrderItems.Weight*Quantity) AS TotalWeight,
SUM(Price * Quantity) AS TotalAmount,
SUM(QuantityReserved) AS TotalReserved,
'.TABLE_PREFIX.'Products.Type AS ProductType
FROM '.$table_prefix.'OrderItems
LEFT JOIN '.TABLE_PREFIX.'Products
ON '.TABLE_PREFIX.'Products.ProductId = '.$table_prefix.'OrderItems.ProductId
WHERE OrderId = '.$ord_id.'
GROUP BY BackOrderFlagCalc, Grouping
ORDER BY BackOrderFlagCalc ASC, PackageNum ASC, ProductType ASC';
$sub_orders = $this->Conn->Query($query);
$processed_sub_orders = Array();
// in case of recurring billing this will not be 0 as usual
//$first_sub_number = ($event->Special == 'recurring') ? $object->getNextSubNumber() - 1 : 0;
$first_sub_number = $object->GetDBField('SubNumber');
$next_sub_number = $first_sub_number;
$group = 1;
$order_has_gift = $order->GetDBField('GiftCertificateDiscount') > 0 ? 1 : 0;
$skip_types = Array (PRODUCT_TYPE_TANGIBLE, PRODUCT_TYPE_DOWNLOADABLE);
foreach ($sub_orders as $sub_order_data) {
$sub_order =& $this->Application->recallObject('ord.-sub'.$next_sub_number, 'ord');
/* @var $sub_order OrdersItem */
if ($this->UseTempTables($event) && $next_sub_number == 0) {
$sub_order =& $order;
}
$sub_order->SetDBFieldsFromHash($order->GetFieldValues());
$sub_order->SetDBField('SubNumber', $next_sub_number);
$sub_order->SetDBField('SubTotal', $sub_order_data['TotalAmount']);
$grouping_data = explode('_', $sub_order_data['Grouping']);
$named_grouping_data['Type'] = $grouping_data[0];
if (!in_array($named_grouping_data['Type'], $skip_types)) {
$named_grouping_data['OrderItemId'] = $grouping_data[1];
$named_grouping_data['ProductId'] = $grouping_data[2];
$named_grouping_data['PackageNum'] = $grouping_data[3];
}
else {
$named_grouping_data['PackageNum'] = $grouping_data[2];
}
if ($named_grouping_data['Type'] == PRODUCT_TYPE_TANGIBLE) {
$sub_order->SetDBField('ShippingCost', getArrayValue( unserialize($order->GetDBField('ShippingInfo')), $sub_order_data['PackageNum'], 'TotalCost') );
$sub_order->SetDBField('InsuranceFee', getArrayValue( unserialize($order->GetDBField('ShippingInfo')), $sub_order_data['PackageNum'], 'InsuranceFee') );
$sub_order->SetDBField('ShippingInfo', serialize(Array(1 => getArrayValue( unserialize($order->GetDBField('ShippingInfo')), $sub_order_data['PackageNum']))));
}
else {
$sub_order->SetDBField('ShippingCost', 0);
$sub_order->SetDBField('InsuranceFee', 0);
$sub_order->SetDBField('ShippingInfo', ''); //otherwise orders w/o shipping wills still have shipping info!
}
$amount_percent = $sub_order->getTotalAmount() * 100 / $order->getTotalAmount();
// proportional affiliate commission splitting
if ($order->GetDBField('AffiliateCommission') > 0) {
$sub_order->SetDBField('AffiliateCommission', $order->GetDBField('AffiliateCommission') * $amount_percent / 100 );
}
$amount_percent = ($sub_order->GetDBField('SubTotal') + $sub_order->GetDBField('ShippingCost')) * 100 / ($order->GetDBField('SubTotal') + $order->GetDBField('ShippingCost'));
if ($order->GetDBField('ProcessingFee') > 0) {
$sub_order->SetDBField('ProcessingFee', round($order->GetDBField('ProcessingFee') * $amount_percent / 100, 2));
}
$sub_order->RecalculateTax();
$original_amount = $sub_order->GetDBField('SubTotal') + $sub_order->GetDBField('ShippingCost') + $sub_order->GetDBField('VAT') + $sub_order->GetDBField('ProcessingFee') + $sub_order->GetDBField('InsuranceFee') - $sub_order->GetDBField('GiftCertificateDiscount');
$sub_order->SetDBField('OriginalAmount', $original_amount);
if ($named_grouping_data['Type'] == 1 && ($sub_order_data['BackOrderFlagCalc'] > 0
||
($sub_order_data['TotalItems'] != $sub_order_data['TotalReserved'])) ) {
$sub_order->SetDBField('Status', ORDER_STATUS_BACKORDERS);
if ($event->Special != 'recurring') { // just in case if admin uses tangible backordered products in recurring orders
$email_event_user =& $this->Application->EmailEventUser('BACKORDER.ADD', $sub_order->GetDBField('PortalUserId'), $this->OrderEmailParams($sub_order));
$email_event_admin =& $this->Application->EmailEventAdmin('BACKORDER.ADD');
}
}
else {
switch ($named_grouping_data['Type']) {
case PRODUCT_TYPE_DOWNLOADABLE:
$sql = 'SELECT oi.*
FROM '.TABLE_PREFIX.'OrderItems oi
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = oi.ProductId
WHERE (OrderId = %s) AND (p.Type = '.PRODUCT_TYPE_DOWNLOADABLE.')';
$downl_products = $this->Conn->Query( sprintf($sql, $ord_id) );
$product_ids = Array();
foreach ($downl_products as $downl_product) {
$this->raiseProductEvent('Approve', $downl_product['ProductId'], $downl_product, $next_sub_number);
$product_ids[] = $downl_product['ProductId'];
}
break;
case PRODUCT_TYPE_TANGIBLE:
$sql = 'SELECT '.$backorder_select.' AS BackOrderFlagCalc, oi.*
FROM '.TABLE_PREFIX.'OrderItems oi
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = oi.ProductId
WHERE (OrderId = %s) AND (BackOrderFlagCalc = 0) AND (p.Type = '.PRODUCT_TYPE_TANGIBLE.')';
$products = $this->Conn->Query( sprintf($sql, $ord_id) );
foreach ($products as $product) {
$this->raiseProductEvent('Approve', $product['ProductId'], $product, $next_sub_number);
}
break;
default:
$order_item_fields = $this->Conn->GetRow('SELECT * FROM '.TABLE_PREFIX.'OrderItems WHERE OrderItemId = '.$named_grouping_data['OrderItemId']);
$this->raiseProductEvent('Approve', $named_grouping_data['ProductId'], $order_item_fields, $next_sub_number);
break;
}
$sub_order->SetDBField('Status', $named_grouping_data['Type'] == PRODUCT_TYPE_TANGIBLE ? ORDER_STATUS_TOSHIP : ORDER_STATUS_PROCESSED);
}
if ($next_sub_number == $first_sub_number) {
$sub_order->SetId($order->GetId());
$sub_order->Update();
}
else {
$sub_order->Create();
}
switch ($named_grouping_data['Type']) {
case PRODUCT_TYPE_TANGIBLE:
$query = 'UPDATE '.$table_prefix.'OrderItems SET OrderId = %s WHERE OrderId = %s AND PackageNum = %s';
$query = sprintf($query, $sub_order->GetId(), $ord_id, $sub_order_data['PackageNum']);
break;
case PRODUCT_TYPE_DOWNLOADABLE:
$query = 'UPDATE '.$table_prefix.'OrderItems SET OrderId = %s WHERE OrderId = %s AND ProductId IN (%s)';
$query = sprintf($query, $sub_order->GetId(), $ord_id, implode(',', $product_ids) );
break;
default:
$query = 'UPDATE '.$table_prefix.'OrderItems SET OrderId = %s WHERE OrderId = %s AND OrderItemId = %s';
$query = sprintf($query, $sub_order->GetId(), $ord_id, $named_grouping_data['OrderItemId']);
break;
}
$this->Conn->Query($query);
if ($order_has_gift) {
// gift certificate can be applied only after items are assigned to suborder
$sub_order->RecalculateGift($event);
$original_amount = $sub_order->GetDBField('SubTotal') + $sub_order->GetDBField('ShippingCost') + $sub_order->GetDBField('VAT') + $sub_order->GetDBField('ProcessingFee') + $sub_order->GetDBField('InsuranceFee') - $sub_order->GetDBField('GiftCertificateDiscount');
$sub_order->SetDBField('OriginalAmount', $original_amount);
$sub_order->Update();
}
$processed_sub_orders[] = $sub_order->GetID();
$next_sub_number++;
$group++;
}
foreach ($processed_sub_orders as $sub_id) {
// update DiscountTotal field
$sql = 'SELECT SUM(ROUND(FlatPrice-Price,2)*Quantity) FROM '.$table_prefix.'OrderItems WHERE OrderId = '.$sub_id;
$discount_total = $this->Conn->GetOne($sql);
$sql = 'UPDATE '.$sub_order->TableName.'
SET DiscountTotal = '.$this->Conn->qstr($discount_total).'
WHERE OrderId = '.$sub_id;
$this->Conn->Query($sql);
}
}
/**
* Call products linked event when spefcfic action is made to product in order
*
* @param string $event_type type of event to get from product ProcessingData = {Approve,Deny,CompleteOrder}
* @param int $product_id ID of product to gather processing data from
* @param Array $order_item_fields OrderItems table record fields (with needed product & order in it)
*/
function raiseProductEvent($event_type, $product_id, $order_item_fields, $next_sub_number=null)
{
$sql = 'SELECT ProcessingData
FROM '.TABLE_PREFIX.'Products
WHERE ProductId = '.$product_id;
$processing_data = $this->Conn->GetOne($sql);
if ($processing_data) {
$processing_data = unserialize($processing_data);
$event_key = getArrayValue($processing_data, $event_type.'Event');
// if requested type of event is defined for product, only then process it
if ($event_key) {
$event = new kEvent($event_key);
$event->setEventParam('field_values', $order_item_fields);
$event->setEventParam('next_sub_number', $next_sub_number);
$this->Application->HandleEvent($event);
}
}
}
function OptionsSalt($options, $comb_only=false)
{
$helper =& $this->Application->recallObject('kProductOptionsHelper');
return $helper->OptionsSalt($options, $comb_only);
}
/**
* Enter description here...
*
* @param kEvent $event
* @param int $item_id
*/
function AddItemToOrder(&$event, $item_id, $qty = null, $package_num = null)
{
if (!isset($qty)) {
$qty = 1;
}
// Loading product to add
$product =& $this->Application->recallObject('p.toadd', null, Array('skip_autoload' => true));
/* @var $product kDBItem */
$product->Load($item_id);
$object =& $this->Application->recallObject('orditems.-item', null, Array('skip_autoload' => true));
/* @var $object kDBItem */
$order =& $this->Application->recallObject('ord');
/* @var $order kDBItem */
if (!$order->isLoaded() && !$this->Application->isAdmin) {
// no order was created before -> create one now
if ($this->_createNewCart($event)) {
$this->LoadItem($event);
}
}
if (!$order->isLoaded()) {
// was unable to create new order
return false;
}
$manager =& $this->Application->recallObject('OrderManager');
/* @var $manager OrderManager */
$manager->setOrder($order);
$manager->addProduct($product, $event->getEventParam('ItemData'), $qty, $package_num);
$this->Application->HandleEvent($ord_event, 'ord:OnRecalculateItems');
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function UpdateShippingTotal(&$event)
{
if ( $this->Application->GetVar('ebay_notification') == 1 ) {
// TODO: get rid of this "if"
return;
}
$object =& $event->getObject();
/* @var $object OrdersItem */
$shipping_total = $insurance_fee = 0;
$shipping_info = $object->GetDBField('ShippingInfo') ? unserialize($object->GetDBField('ShippingInfo')) : false;
if ( is_array($shipping_info) ) {
foreach ($shipping_info as $a_shipping) {
// $id_elements = explode('_', $a_shipping['ShippingTypeId']);
$shipping_total += $a_shipping['TotalCost'];
$insurance_fee += $a_shipping['InsuranceFee'];
}
}
$object->SetDBField('ShippingCost', $shipping_total);
$object->SetDBField('InsuranceFee', $insurance_fee);
// no need to update, it will be called in calling method
$this->RecalculateTax($event);
}
/**
* Recompile shopping cart, splitting or grouping orders and backorders depending on total quantities.
* First it counts total qty for each ProductId, and then creates order for available items
* and backorder for others. It also updates the sub-total for the order
*
* @param kEvent $event
* @return bool Returns true if items splitting/grouping were changed
*/
function OnRecalculateItems(&$event)
{
if (is_object($event->MasterEvent) && ($event->MasterEvent->status != kEvent::erSUCCESS)) {
// e.g. master order update failed, don't recalculate order products
return ;
}
$order =& $event->getObject();
/* @var $order OrdersItem */
if ( !$order->isLoaded() ) {
$this->LoadItem($event); // try to load
}
$ord_id = (int)$order->GetID();
if ( !$order->isLoaded() ) return; //order has not been created yet
if( $order->GetDBField('Status') != ORDER_STATUS_INCOMPLETE )
{
return;
}
$manager =& $this->Application->recallObject('OrderManager');
/* @var $manager OrderManager */
$manager->setOrder($order);
$result = $manager->calculate();
if ( $order->GetDBField('CouponId') && $order->GetDBField('CouponDiscount') == 0 ) {
$this->RemoveCoupon($order);
$order->setCheckoutError(OrderCheckoutErrorType::COUPON, OrderCheckoutError::COUPON_REMOVED_AUTOMATICALLY);
}
if ( $result ) {
$this->UpdateShippingOption($event);
}
$this->UpdateShippingTotal($event);
$this->RecalculateProcessingFee($event);
$this->RecalculateTax($event);
$this->RecalculateGift($event);
if ( $event->Name != 'OnAfterItemUpdate' ) {
$order->Update();
}
$event->setEventParam('RecalculateChangedCart', $result);
if ( is_object($event->MasterEvent) ) {
$event->MasterEvent->setEventParam('RecalculateChangedCart', $result);
}
/*if ( $result && !getArrayValue($event->redirect_params, 'checkout_error') ) {
$event->SetRedirectParam('checkout_error', OrderCheckoutError::STATE_CHANGED);
}*/
if ( $result && is_object($event->MasterEvent) && $event->MasterEvent->Name == 'OnUserLogin' ) {
$shop_cart_template = $this->Application->GetVar('shop_cart_template');
if ( $shop_cart_template && is_object($event->MasterEvent->MasterEvent) ) {
// $event->MasterEvent->MasterEvent->SetRedirectParam('checkout_error', OrderCheckoutError::CHANGED_AFTER_LOGIN);
$event->MasterEvent->MasterEvent->redirect = $shop_cart_template;
}
}
return $result;
}
/* function GetShippingCost($user_country_id, $user_state_id, $user_zip, $weight, $items, $amount, $shipping_type)
{
$this->Application->recallObject('ShippingQuoteEngine');
$shipping_h =& $this->Application->recallObject('CustomShippingQuoteEngine');
$query = $shipping_h->QueryShippingCost($user_country_id, $user_state_id, $user_zip, $weight, $items, $amount, $shipping_type);
$cost = $this->Conn->GetRow($query);
return $cost['TotalCost'];
}*/
/**
* Return product pricing id for given product, if not passed - return primary pricing ID
*
* @param int $product_id ProductId
* @return float
*/
function GetPricingId($product_id, $item_data) {
if (!is_array($item_data)) {
$item_data = unserialize($item_data);
}
$price_id = getArrayValue($item_data, 'PricingId');
if (!$price_id) {
$price_id = $this->Application->GetVar('pr_id');
}
if (!$price_id){
$price_id = $this->Conn->GetOne('SELECT PriceId FROM '.TABLE_PREFIX.'ProductsPricing WHERE ProductId='.$product_id.' AND IsPrimary=1');
}
return $price_id;
}
function UpdateShippingOption(&$event)
{
$object =& $event->getObject();
$shipping_option = $object->GetDBField('ShippingOption');
if($shipping_option == '') return;
$table_prefix = $this->TablePrefix($event);
if ($shipping_option == 1 || $shipping_option == 0) { // backorder separately
$query = 'UPDATE '.$table_prefix.'OrderItems SET BackOrderFlag = 1 WHERE OrderId = '.$object->GetId().' AND BackOrderFlag > 1';
$this->Conn->Query($query);
}
if ($shipping_option == 2) {
$query = 'SELECT * FROM '.$table_prefix.'OrderItems WHERE OrderId = '.$object->GetId().' AND BackOrderFlag >= 1 ORDER By ProductName asc';
$items = $this->Conn->Query($query);
$backorder_flag = 2;
foreach ($items as $an_item) {
$query = 'UPDATE '.$table_prefix.'OrderItems SET BackOrderFlag = '.$backorder_flag.' WHERE OrderItemId = '.$an_item['OrderItemId'];
$this->Conn->Query($query);
$backorder_flag++;
}
}
}
/**
* Updates shipping types
*
* @param kEvent $event
* @return bool
*/
function UpdateShippingTypes(&$event)
{
$object =& $event->getObject();
/* @var $object OrdersItem */
$ord_id = $object->GetID();
$order_info = $this->Application->GetVar('ord');
$shipping_ids = getArrayValue($order_info, $ord_id, 'ShippingTypeId');
if (!$shipping_ids) {
return;
}
$ret = true;
$shipping_types = Array();
$last_shippings = unserialize( $this->Application->RecallVar('LastShippings') );
$template = $this->Application->GetVar('t');
$shipping_templates = Array ('in-commerce/checkout/shipping', 'in-commerce/orders/orders_edit_shipping');
$quote_engine_collector =& $this->Application->recallObject('ShippingQuoteCollector');
/* @var $quote_engine_collector ShippingQuoteCollector */
foreach ($shipping_ids as $package => $id) {
// try to validate
$shipping_types[$package] = $last_shippings[$package][$id];
$sqe_class_name = $quote_engine_collector->GetClassByType($shipping_types, $package);
if (($object->GetDBField('ShippingType') == 0) && ($sqe_class_name !== false) && in_array($template, $shipping_templates)) {
$shipping_quote_engine =& $this->Application->recallObject($sqe_class_name);
/* @var $shipping_quote_engine ShippingQuoteEngine */
// USPS related part
// TODO: remove USPS condition from here
// set first of found shippings just to check if any errors are returned
$current_usps_shipping_types = unserialize($this->Application->RecallVar('current_usps_shipping_types'));
$object->SetDBField('ShippingInfo', serialize( Array($package => $current_usps_shipping_types[$id])) );
$sqe_data = $shipping_quote_engine->MakeOrder($object, true);
if ( $sqe_data ) {
if ( !isset($sqe_data['error_number']) ) {
// update only international shipping
if ( $object->GetDBField('ShippingCountry') != 'USA') {
$shipping_types[$package]['TotalCost'] = $sqe_data['Postage'];
}
}
else {
$ret = false;
$this->Application->StoreVar('sqe_error', $sqe_data['error_description']);
}
}
$object->SetDBField('ShippingInfo', '');
}
}
$object->SetDBField('ShippingInfo', serialize($shipping_types));
return $ret;
}
/*function shipOrder(&$order_items)
{
$product_object =& $this->Application->recallObject('p', null, Array('skip_autoload' => true));
$order_item =& $this->Application->recallObject('orditems.-item');
while( !$order_items->EOL() )
{
$rec = $order_items->getCurrentRecord();
$order_item->SetDBFieldsFromHash($rec);
$order_item->SetId($rec['OrderItemId']);
$order_item->SetDBField('QuantityReserved', 0);
$order_item->Update();
$order_items->GoNext();
}
return true;
}*/
function RecalculateTax(&$event)
{
$object =& $event->getObject();
/* @var $object OrdersItem */
if ($object->GetDBField('Status') > ORDER_STATUS_PENDING) {
return;
}
$object->RecalculateTax();
}
function RecalculateProcessingFee(&$event)
{
$object =& $event->getObject();
// Do not reset processing fee while orders are being split (see SplitOrder)
if (preg_match("/^-sub/", $object->Special)) return;
if ($object->GetDBField('Status') > ORDER_STATUS_PENDING) return; //no changes for orders other than incomple or pending
$pt = $object->GetDBField('PaymentType');
$processing_fee = $this->Conn->GetOne('SELECT ProcessingFee FROM '.$this->Application->getUnitOption('pt', 'TableName').' WHERE PaymentTypeId = '.$pt);
$object->SetDBField( 'ProcessingFee', $processing_fee );
$this->UpdateTotals($event);
}
function UpdateTotals(&$event)
{
$object =& $event->getObject();
/* @var $object OrdersItem */
$object->UpdateTotals();
}
/*function CalculateDiscount(&$event)
{
$object =& $event->getObject();
$coupon =& $this->Application->recallObject('coup', null, Array('skip_autoload' => true));
if(!$coupon->Load( $object->GetDBField('CouponId'), 'CouponId' ))
{
return false;
}
$sql = 'SELECT Price * Quantity AS Amount, ProductId FROM '.$this->Application->getUnitOption('orditems', 'TableName').'
WHERE OrderId = '.$object->GetDBField('OrderId');
$orditems = $this->Conn->GetCol($sql, 'ProductId');
$sql = 'SELECT coupi.ItemType, p.ProductId FROM '.$this->Application->getUnitOption('coupi', 'TableName').' coupi
LEFT JOIN '.$this->Application->getUnitOption('p', 'TableName').' p
ON coupi.ItemResourceId = p.ResourceId
WHERE CouponId = '.$object->GetDBField('CouponId');
$discounts = $this->Conn->GetCol($sql, 'ProductId');
$discount_amount = 0;
foreach($orditems as $product_id => $amount)
{
if(isset($discounts[$product_id]) || array_search('0', $discounts, true) !== false)
{
switch($coupon->GetDBField('Type'))
{
case 1:
$discount_amount += $coupon->GetDBField('Amount') < $amount ? $coupon->GetDBField('Amount') : $amount;
break;
case 2:
$discount_amount += $amount * $coupon->GetDBField('Amount') / 100;
break;
default:
}
break;
}
}
$object->SetDBField('CouponDiscount', $discount_amount);
return $discount_amount;
}*/
/**
* Jumps to selected order in order's list from search tab
*
* @param kEvent $event
*/
function OnGoToOrder(&$event)
{
$id = array_shift( $this->StoreSelectedIDs($event) );
$id_field = $this->Application->getUnitOption($event->Prefix,'IDField');
$table = $this->Application->getUnitOption($event->Prefix,'TableName');
$sql = 'SELECT Status FROM %s WHERE %s = %s';
$order_status = $this->Conn->GetOne( sprintf($sql, $table, $id_field, $id) );
$prefix_special = $event->Prefix.'.'.$this->getSpecialByType($order_status);
$orders_list =& $this->Application->recallObject($prefix_special, $event->Prefix.'_List', Array('per_page'=>-1) );
/* @var $orders_list kDBList */
$orders_list->Query();
foreach ($orders_list->Records as $row_num => $record) {
if ( $record[$id_field] == $id ) {
break;
}
}
$per_page = $this->getPerPage( new kEvent($prefix_special.':OnDummy') );
$page = ceil( ($row_num+1) / $per_page );
$this->Application->StoreVar($prefix_special.'_Page', $page);
$event->redirect = 'in-commerce/orders/orders_'.$this->getSpecialByType($order_status).'_list';
}
/**
* Reset's any selected order state to pending
*
* @param kEvent $event
*/
function OnResetToPending(&$event)
{
$object =& $event->getObject( Array('skip_autoload' => true) );
/* @var $object kDBItem */
$items_info = $this->Application->GetVar($event->getPrefixSpecial(true));
if ( $items_info ) {
foreach ($items_info as $id => $field_values) {
$object->Load($id);
$object->SetDBField('Status', ORDER_STATUS_PENDING);
if ( $object->Update() ) {
$event->status = kEvent::erSUCCESS;
}
else {
$event->status = kEvent::erFAIL;
$event->redirect = false;
break;
}
}
}
}
/**
* Creates list from items selected in grid
*
* @param kEvent $event
*/
function OnLoadSelected(&$event)
{
$event->setPseudoClass('_List');
$object =& $event->getObject( Array('selected_only' => true) );
$event->redirect = false;
}
/**
* Return orders list, that will expire in time specified
*
* @param int $pre_expiration timestamp
* @return Array
*/
function getRecurringOrders($pre_expiration)
{
$ord_table = $this->Application->getUnitOption('ord', 'TableName');
$ord_idfield = $this->Application->getUnitOption('ord', 'IDField');
$processing_allowed = Array(ORDER_STATUS_PROCESSED, ORDER_STATUS_ARCHIVED);
$sql = 'SELECT '.$ord_idfield.', PortalUserId, GroupId, NextCharge
FROM '.$ord_table.'
WHERE (IsRecurringBilling = 1) AND (NextCharge < '.$pre_expiration.') AND Status IN ('.implode(',', $processing_allowed).')';
return $this->Conn->Query($sql, $ord_idfield);
}
/**
* [SCHEDULED TASK] Checks what orders should expire and renew automatically (if such flag set)
*
* @param kEvent $event
*/
function OnCheckRecurringOrders(&$event)
{
$skip_clause = Array();
$ord_table = $this->Application->getUnitOption($event->Prefix, 'TableName');
$ord_idfield = $this->Application->getUnitOption($event->Prefix, 'IDField');
$pre_expiration = adodb_mktime() + $this->Application->ConfigValue('Comm_RecurringChargeInverval') * 3600 * 24;
$to_charge = $this->getRecurringOrders($pre_expiration);
if ($to_charge) {
$order_ids = Array();
foreach ($to_charge as $order_id => $record) {
// skip virtual users (e.g. root, guest, etc.) & invalid subscriptions (with no group specified, no next charge, but Recurring flag set)
if (!$record['PortalUserId'] || !$record['GroupId'] || !$record['NextCharge']) continue;
$order_ids[] = $order_id;
// prevent duplicate user+group pairs
$skip_clause[ 'PortalUserId = '.$record['PortalUserId'].' AND GroupId = '.$record['GroupId'] ] = $order_id;
}
// process only valid orders
$temp_handler =& $this->Application->recallObject($event->Prefix.'_TempHandler', 'kTempTablesHandler');
$cloned_order_ids = $temp_handler->CloneItems($event->Prefix, 'recurring', $order_ids);
$order =& $this->Application->recallObject($event->Prefix.'.recurring', null, Array('skip_autoload' => true));
foreach ($cloned_order_ids as $order_id) {
$order->Load($order_id);
$this->Application->HandleEvent($complete_event, $event->Prefix.'.recurring:OnCompleteOrder' );
if ($complete_event->status == kEvent::erSUCCESS) {
//send recurring ok email
$email_event_user =& $this->Application->EmailEventUser('ORDER.RECURRING.PROCESSED', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order));
$email_event_admin =& $this->Application->EmailEventAdmin('ORDER.RECURRING.PROCESSED');
}
else {
//send Recurring failed event
$order->SetDBField('Status', ORDER_STATUS_DENIED);
$order->Update();
$email_event_user =& $this->Application->EmailEventUser('ORDER.RECURRING.DENIED', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order));
$email_event_admin =& $this->Application->EmailEventAdmin('ORDER.RECURRING.DENIED');
}
}
// remove recurring flag from all orders found, not to select them next time script runs
$sql = 'UPDATE '.$ord_table.'
SET IsRecurringBilling = 0
WHERE '.$ord_idfield.' IN ('.implode(',', array_keys($to_charge)).')';
$this->Conn->Query($sql);
}
if ( !is_object($event->MasterEvent) ) {
// not called as hook
return ;
}
$pre_expiration = adodb_mktime() + $this->Application->ConfigValue('User_MembershipExpirationReminder') * 3600 * 24;
$to_charge = $this->getRecurringOrders($pre_expiration);
foreach ($to_charge as $order_id => $record) {
// skip virtual users (e.g. root, guest, etc.) & invalid subscriptions (with no group specified, no next charge, but Recurring flag set)
if (!$record['PortalUserId'] || !$record['GroupId'] || !$record['NextCharge']) continue;
// prevent duplicate user+group pairs
$skip_clause[ 'PortalUserId = '.$record['PortalUserId'].' AND GroupId = '.$record['GroupId'] ] = $order_id;
}
$skip_clause = array_flip($skip_clause);
$event->MasterEvent->setEventParam('skip_clause', $skip_clause);
}
function OnGeneratePDF(&$event)
{
$this->OnLoadSelected($event);
$this->Application->InitParser();
$o = $this->Application->ParseBlock(array('name'=>'in-commerce/orders/orders_pdf'));
$file_helper =& $this->Application->recallObject('FileHelper');
/* @var $file_helper FileHelper */
$file_helper->CheckFolder(EXPORT_PATH);
$htmlFile = EXPORT_PATH . '/tmp.html';
$fh = fopen($htmlFile, 'w');
fwrite($fh, $o);
fclose($fh);
// return;
// require_once (FULL_PATH.'html2pdf/PDFEncryptor.php');
// Full path to the file to be converted
// $htmlFile = dirname(__FILE__) . '/test.html';
// The default domain for images that use a relative path
// (you'll need to change the paths in the test.html page
// to an image on your server)
$defaultDomain = DOMAIN;
// Full path to the PDF we are creating
$pdfFile = EXPORT_PATH . '/tmp.pdf';
// Remove old one, just to make sure we are making it afresh
@unlink($pdfFile);
$pdf_helper =& $this->Application->recallObject('kPDFHelper');
$pdf_helper->FileToFile($htmlFile, $pdfFile);
return ;
// DOM PDF VERSION
/*require_once(FULL_PATH.'/dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->load_html_file($htmlFile);
if ( isset($base_path) ) {
$dompdf->set_base_path($base_path);
}
$dompdf->set_paper($paper, $orientation);
$dompdf->render();
file_put_contents($pdfFile, $dompdf->output());
return ;*/
// Instnatiate the class with our variables
require_once (FULL_PATH.'/html2pdf/HTML_ToPDF.php');
$pdf = new HTML_ToPDF($htmlFile, $defaultDomain, $pdfFile);
$pdf->setHtml2Ps('/usr/bin/html2ps');
$pdf->setPs2Pdf('/usr/bin/ps2pdf');
$pdf->setGetUrl('/usr/local/bin/curl -i');
// Set headers/footers
$pdf->setHeader('color', 'black');
$pdf->setFooter('left', '');
$pdf->setFooter('right', '$D');
$pdf->setDefaultPath(BASE_PATH.'/kernel/admin_templates/');
$result = $pdf->convert();
// Check if the result was an error
if (PEAR::isError($result)) {
$this->Application->ApplicationDie($result->getMessage());
}
else {
$download_url = rtrim($this->Application->BaseURL(), '/') . EXPORT_BASE_PATH . '/tmp.pdf';
echo "PDF file created successfully: $result";
echo '<br />Click <a href="' . $download_url . '">here</a> to view the PDF file.';
}
}
/**
* Occurs, when config was parsed, allows to change config data dynamically
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnAfterConfigRead(kEvent &$event)
{
parent::OnAfterConfigRead($event);
if (defined('IS_INSTALL') && IS_INSTALL) {
return ;
}
$order_number = (int)$this->Application->ConfigValue('Comm_Order_Number_Format_P');
$order_sub_number = (int)$this->Application->ConfigValue('Comm_Order_Number_Format_S');
$calc_fields = $this->Application->getUnitOption($event->Prefix, 'CalculatedFields');
foreach ($calc_fields as $special => $fields) {
$calc_fields[$special]['OrderNumber'] = str_replace('6', $order_number, $calc_fields[$special]['OrderNumber']);
$calc_fields[$special]['OrderNumber'] = str_replace('3', $order_sub_number, $calc_fields[$special]['OrderNumber']);
}
$this->Application->setUnitOption($event->Prefix, 'CalculatedFields', $calc_fields);
$fields = $this->Application->getUnitOption($event->Prefix, 'Fields');
$fields['Number']['format'] = str_replace('%06d', '%0'.$order_number.'d', $fields['Number']['format']);
$fields['SubNumber']['format'] = str_replace('%03d', '%0'.$order_sub_number.'d', $fields['SubNumber']['format']);
$site_helper =& $this->Application->recallObject('SiteHelper');
/* @var $site_helper SiteHelper */
$fields['BillingCountry']['default'] = $site_helper->getDefaultCountry('Billing');
$fields['ShippingCountry']['default'] = $site_helper->getDefaultCountry('Shipping');
if (!$this->Application->isAdminUser) {
$user_groups = explode(',', $this->Application->RecallVar('UserGroups'));
$default_group = $this->Application->ConfigValue('User_LoggedInGroup');
if (!in_array($default_group, $user_groups)){
$user_groups[] = $default_group;
}
$sql_part = '';
// limit payment types by domain
$payment_types = $this->Application->siteDomainField('PaymentTypes');
if (strlen($payment_types)) {
$payment_types = explode('|', substr($payment_types, 1, -1));
$sql_part .= ' AND PaymentTypeId IN (' . implode(',', $payment_types) . ')';
}
// limit payment types by user group
$sql_part .= ' AND (PortalGroups LIKE "%%,'.implode(',%%" OR PortalGroups LIKE "%%,', $user_groups).',%%")';
$fields['PaymentType']['options_sql'] = str_replace(
'ORDER BY ',
$sql_part . ' ORDER BY ',
$fields['PaymentType']['options_sql']
);
}
$this->Application->setUnitOption($event->Prefix, 'Fields', $fields);
}
/**
* Allows configuring export options
*
* @param kEvent $event
*/
function OnBeforeExportBegin(&$event)
{
$options = $event->getEventParam('options') ;
$items_list =& $this->Application->recallObject($event->Prefix.'.'.$this->Application->RecallVar('export_oroginal_special'), $event->Prefix.'_List');
$items_list->SetPerPage(-1);
if ($options['export_ids'] != '') {
$items_list->AddFilter('export_ids', $items_list->TableName.'.'.$items_list->IDField.' IN ('.implode(',',$options['export_ids']).')');
}
$options['ForceCountSQL'] = $items_list->getCountSQL( $items_list->GetSelectSQL(true,false) );
$options['ForceSelectSQL'] = $items_list->GetSelectSQL();
$event->setEventParam('options',$options);
$object =& $this->Application->recallObject($event->Prefix.'.export');
/* @var $object kDBItem */
$object->SetField('Number', 999999);
$object->SetField('SubNumber', 999);
}
/**
* Returns specific to each item type columns only
*
* @param kEvent $event
* @return Array
*/
function getCustomExportColumns(&$event)
{
$columns = parent::getCustomExportColumns($event);
$new_columns = Array(
'__VIRTUAL__CustomerName' => 'CustomerName',
'__VIRTUAL__TotalAmount' => 'TotalAmount',
'__VIRTUAL__AmountWithoutVAT' => 'AmountWithoutVAT',
'__VIRTUAL__SubtotalWithDiscount' => 'SubtotalWithDiscount',
'__VIRTUAL__SubtotalWithoutDiscount' => 'SubtotalWithoutDiscount',
'__VIRTUAL__OrderNumber' => 'OrderNumber',
);
return array_merge($columns, $new_columns);
}
/**
* Saves content of temp table into live and
* redirects to event' default redirect (normally grid template)
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnSave(&$event)
{
parent::OnSave($event);
if ( $event->status != kEvent::erSUCCESS ) {
return ;
}
$copied_ids = unserialize($this->Application->RecallVar($event->Prefix . '_copied_ids' . $this->Application->GetVar('wid'), serialize(Array ())));
foreach ($copied_ids as $id) {
$an_event = new kEvent($this->Prefix . ':Dummy');
$this->Application->SetVar($this->Prefix . '_id', $id);
$this->Application->SetVar($this->Prefix . '_mode', ''); // this is to fool ReserveItems to use live table
$this->ReserveItems($an_event);
}
}
/**
* Occures before an item is copied to live table (after all foreign keys have been updated)
* Id of item being copied is passed as event' 'id' param
*
* @param kEvent $event
*/
function OnBeforeCopyToLive(&$event)
{
$id = $event->getEventParam('id');
$copied_ids = unserialize($this->Application->RecallVar($event->Prefix.'_copied_ids'.$this->Application->GetVar('wid'), serialize(array())));
array_push($copied_ids, $id);
$this->Application->StoreVar($event->Prefix.'_copied_ids'.$this->Application->GetVar('wid'), serialize($copied_ids) );
}
/**
* Checks, that currently loaded item is allowed for viewing (non permission-based)
*
* @param kEvent $event
* @return bool
*/
function checkItemStatus(&$event)
{
if ($this->Application->isAdminUser) {
return true;
}
$object =& $event->getObject();
/* @var $object kDBItem */
if ( !$object->isLoaded() ) {
return true;
}
return $object->GetDBField('PortalUserId') == $this->Application->RecallVar('user_id');
}
// ===== Gift Certificates Related =====
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnApplyGiftCertificate(&$event)
{
$code = $this->Application->GetVar('giftcert_code');
if ( $code == '' ) {
return;
}
$object =& $event->getObject();
/* @var $object OrdersItem */
$gift_certificate =& $this->Application->recallObject('gc', null, Array ('skip_autoload' => true));
/* @var $gift_certificate kDBItem */
$gift_certificate->Load($code, 'Code');
if ( !$gift_certificate->isLoaded() ) {
$event->status = kEvent::erFAIL;
$object->setCheckoutError(OrderCheckoutErrorType::GIFT_CERTIFICATE, OrderCheckoutError::GC_CODE_INVALID);
$event->redirect = false; // check!!!
return;
}
$debit = $gift_certificate->GetDBField('Debit');
$expire_date = $gift_certificate->GetDBField('Expiration');
if ( $gift_certificate->GetDBField('Status') != 1 || ($expire_date && $expire_date < adodb_mktime()) || ($debit <= 0) ) {
$event->status = kEvent::erFAIL;
$object->setCheckoutError(OrderCheckoutErrorType::GIFT_CERTIFICATE, OrderCheckoutError::GC_CODE_EXPIRED);
$event->redirect = false;
return;
}
$object->SetDBField('GiftCertificateId', $gift_certificate->GetDBField('GiftCertificateId'));
$object->Update();
$object->setCheckoutError(OrderCheckoutErrorType::GIFT_CERTIFICATE, OrderCheckoutError::GC_APPLIED);
}
/**
* Removes gift certificate from order
*
* @param kEvent $event
* @deprecated
*/
function OnRemoveGiftCertificate(&$event)
{
$object =& $event->getObject();
/* @var $object OrdersItem */
$this->RemoveGiftCertificate($object);
$object->setCheckoutError(OrderCheckoutErrorType::GIFT_CERTIFICATE, OrderCheckoutError::GC_REMOVED);
$event->CallSubEvent('OnRecalculateItems');
}
function RemoveGiftCertificate(&$object)
{
$object->RemoveGiftCertificate();
}
function RecalculateGift(&$event)
{
$object =& $event->getObject();
/* @var $object OrdersItem */
if ($object->GetDBField('Status') > ORDER_STATUS_PENDING) {
return ;
}
$object->RecalculateGift($event);
}
function GetWholeOrderGiftCertificateDiscount($gift_certificate_id)
{
if (!$gift_certificate_id) {
return 0;
}
$sql = 'SELECT Debit
FROM '.TABLE_PREFIX.'GiftCertificates
WHERE GiftCertificateId = '.$gift_certificate_id;
return $this->Conn->GetOne($sql);
}
/**
* Downloads shipping tracking bar code, that was already generated by USPS service
*
* @param kEvent $event
*/
function OnDownloadLabel(&$event)
{
$event->status = kEvent::erSTOP;
ini_set('memory_limit', '300M');
ini_set('max_execution_time', '0');
$object =& $event->getObject();
/* @var $object kDBItem */
$file = $object->GetDBField('ShippingTracking') . '.pdf';
$full_path = USPS_LABEL_FOLDER . $file;
if ( !file_exists($full_path) || !is_file($full_path) ) {
return;
}
header('Content-type: ' . kUtil::mimeContentType($full_path));
header('Content-Disposition: attachment; filename="' . $file . '"');
readfile($full_path);
}
/**
* Occurs before validation attempt
*
* @param kEvent $event
* @return void
* @access protected
*/
protected function OnBeforeItemValidate(kEvent &$event)
{
parent::OnBeforeItemValidate($event);
$create_account = $this->Application->GetVar('create_account');
$object =& $event->getObject();
/* @var $object kDBItem */
$required_fields = Array ('UserPassword', 'UserPassword_plain', 'VerifyUserPassword', 'VerifyUserPassword_plain');
$object->setRequired($required_fields, $create_account);
$billing_email = $object->GetDBField('BillingEmail');
if ( $create_account && $object->GetDBField('PortalUserId') == USER_GUEST && $billing_email ) {
// check that e-mail available
$sql = 'SELECT PortalUserId
FROM ' . TABLE_PREFIX . 'PortalUser
WHERE Email = ' . $this->Conn->qstr($billing_email);
$user_id = $this->Conn->GetOne($sql);
if ( $user_id ) {
$object->SetError('BillingEmail', 'unique');
}
}
}
/**
* Performs order update and returns results in format, needed by FormManager
*
* @param kEvent $event
*/
function OnUpdateAjax(&$event)
{
$ajax_form_helper =& $this->Application->recallObject('AjaxFormHelper');
/* @var $ajax_form_helper AjaxFormHelper */
$ajax_form_helper->transitEvent($event, 'OnUpdate');
}
}
\ No newline at end of file
Index: branches/5.2.x/units/orders/orders_item.php
===================================================================
--- branches/5.2.x/units/orders/orders_item.php (revision 14883)
+++ branches/5.2.x/units/orders/orders_item.php (revision 14884)
@@ -1,332 +1,380 @@
<?php
/**
* @version $Id$
* @package In-Commerce
* @copyright Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
* @license Commercial License
* This software is protected by copyright law and international treaties.
* Unauthorized reproduction or unlicensed usage of the code of this program,
* or any portion of it may result in severe civil and criminal penalties,
* and will be prosecuted to the maximum extent possible under the law
* See http://www.in-portal.org/commercial-license for copyright notices and details.
*/
defined('FULL_PATH') or die('restricted access!');
class OrdersItem extends kDBItem
{
- function SetFieldsFromHash($hash, $set_fields=null)
+ /**
+ * Sets item' fields corresponding to elements in passed $hash values.
+ *
+ * The function sets current item fields to values passed in $hash, by matching $hash keys with field names
+ * of current item. If current item' fields are unknown {@link kDBItem::PrepareFields()} is called before actually setting the fields
+ *
+ * @param Array $hash
+ * @param Array $set_fields Optional param, field names in target object to set, other fields will be skipped
+ * @return void
+ * @access public
+ */
+ public function SetFieldsFromHash($hash, $set_fields = Array ())
{
parent::SetFieldsFromHash($hash, $set_fields);
$options = $this->GetFieldOptions('PaymentCCExpDate');
- if( $this->GetDirtyField($options['month_field']) || $this->GetDirtyField($options['year_field']) )
- {
+
+ if ( $this->GetDirtyField($options['month_field']) || $this->GetDirtyField($options['year_field']) ) {
$this->SetDirtyField('PaymentCCExpDate', 0);
$this->SetField('PaymentCCExpDate', 0);
}
}
/**
* Returns gateway data based on payment type used in order
*
* @param int $pt_id
* @return Array
* @access public
*/
public function getGatewayData($pt_id = null)
{
// get Gateway fields
if ( !isset($pt_id) || !$pt_id ) {
$pt_id = $this->GetDBField('PaymentType');
if ( !$pt_id ) {
// no Payment Type Id found for this order - escape SQL fatal below
return false;
}
}
$pt_table = $this->Application->getUnitOption('pt', 'TableName');
$sql = 'SELECT GatewayId
FROM %s
WHERE PaymentTypeId = %s';
$gw_id = $this->Conn->GetOne(sprintf($sql, $pt_table, $pt_id));
$sql = 'SELECT *
FROM %s
WHERE GatewayId = %s';
$ret = $this->Conn->GetRow(sprintf($sql, TABLE_PREFIX . 'Gateways', $gw_id));
// get Gateway parameters based on payment type
$gwf_table = $this->Application->getUnitOption('gwf', 'TableName');
$gwfv_table = $this->Application->getUnitOption('gwfv', 'TableName');
$sql = 'SELECT gwfv.Value, gwf.SystemFieldName
FROM %s gwf
LEFT JOIN %s gwfv ON gwf.GWConfigFieldId = gwfv.GWConfigFieldId
WHERE gwfv.PaymentTypeId = %s AND gwf.GatewayId = %s';
$ret['gw_params'] = $this->Conn->GetCol(sprintf($sql, $gwf_table, $gwfv_table, $pt_id, $gw_id), 'SystemFieldName');
$ret['gw_params']['gateway_id'] = $gw_id;
if ( $this->GetDBField('IsRecurringBilling') && $this->Application->ConfigValue('Comm_AutoProcessRecurringOrders') ) {
if ( isset($ret['gw_params']['shipping_control']) ) {
$ret['gw_params']['shipping_control'] = SHIPPING_CONTROL_DIRECT;
}
}
return $ret;
}
/**
* Checks if tangible items are present in order
*
* @return bool
*/
function HasTangibleItems()
{
$sql = 'SELECT COUNT(*)
FROM '.TABLE_PREFIX.'OrderItems orditems
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = orditems.ProductId
WHERE (orditems.OrderId = '.$this->GetID().') AND (p.Type = '.PRODUCT_TYPE_TANGIBLE.')';
return $this->Conn->GetOne($sql) ? true : false;
}
/**
* Calculates tax value of order items based on billing & shipping country specified
*
* @return double
*/
function getTaxPercent()
{
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
/* @var $cs_helper kCountryStatesHelper */
$shipping_country_id = $cs_helper->getCountryStateId($this->GetDBField('ShippingCountry'), DESTINATION_TYPE_COUNTRY);
$shipping_state_id = $cs_helper->getCountryStateId($this->GetDBField('ShippingState'), DESTINATION_TYPE_STATE);
$shipping_zip = (string) $this->GetDBField('ShippingZip');
$billing_country_id = $cs_helper->getCountryStateId($this->GetDBField('BillingCountry'), DESTINATION_TYPE_COUNTRY);
$billing_state_id = $cs_helper->getCountryStateId($this->GetDBField('BillingState'), DESTINATION_TYPE_STATE);
$billing_zip = (string) $this->GetDBField('BillingZip');
/*
$dest_ids = array_diff( array_unique( Array( $shipping_country_id, $shipping_state_id, $billing_country_id, $billing_state_id ) ), Array(0) );
$dest_values = array_diff( array_unique( Array( $this->Conn->qstr($shipping_zip), $this->Conn->qstr($billing_zip) ) ), Array('\'\'') );
*/
$tax = false;
$sql = 'SELECT tx.*
FROM '.$this->Application->getUnitOption('tax', 'TableName').' tx
LEFT JOIN '.$this->Application->getUnitOption('taxdst', 'TableName').' txd ON tx.TaxZoneId = txd.TaxZoneId
WHERE
( txd.StdDestId IN ('.$shipping_country_id.','.$shipping_state_id.')
AND
( (txd.DestValue = "" OR txd.DestValue IS NULL)
OR
txd.DestValue = '.$this->Conn->qstr($shipping_zip).'
)
)
OR
( txd.StdDestId IN ('.$billing_country_id.','.$billing_state_id.')
AND
( (txd.DestValue = "" OR txd.DestValue IS NULL)
OR
txd.DestValue = '.$this->Conn->qstr($billing_zip).'
)
)
ORDER BY tx.TaxValue DESC';
$tax = $this->Conn->GetRow($sql);
if ($tax == false) {
$tax['TaxValue'] = 0;
$tax['ApplyToShipping'] = 0;
$tax['ApplyToProcessing'] = 0;
}
return $tax;
}
function RecalculateTax()
{
$tax = $this->getTaxPercent();
- $this->SetDBField( 'VATPercent', $tax['TaxValue'] );
- $this->SetDBField( 'ShippingTaxable', $tax['ApplyToShipping']);
- $this->SetDBField( 'ProcessingTaxable', $tax['ApplyToProcessing']);
+ $this->SetDBField('VATPercent', $tax['TaxValue']);
+ $this->SetDBField('ShippingTaxable', $tax['ApplyToShipping']);
+ $this->SetDBField('ProcessingTaxable', $tax['ApplyToProcessing']);
$this->UpdateTotals();
- $subtotal = $this->GetDBField('AmountWithoutVAT');
+ if ( !$this->GetDBField('VATIncluded') ) {
+ $subtotal = $this->GetDBField('AmountWithoutVAT');
- $query = 'SELECT SUM(Quantity * Price) FROM '.TABLE_PREFIX.'OrderItems AS oi
- LEFT JOIN '.TABLE_PREFIX.'Products AS p
- ON p.ProductId = oi.ProductId
- WHERE p.Type = 6 AND oi.OrderId = '.$this->GetDBField('OrderId');
- $tax_exempt = $this->Conn->GetOne($query);
- if ($tax_exempt) $subtotal -= $tax_exempt;
+ $tax_exempt = $this->getTaxExempt();
- $this->SetDBField( 'VAT', round($subtotal * $tax['TaxValue'] / 100, 2) );
- $this->UpdateTotals();
+ if ( $tax_exempt ) {
+ $subtotal -= $tax_exempt;
+ }
+
+ $this->SetDBField('VAT', round($subtotal * $tax['TaxValue'] / 100, 2));
+ $this->UpdateTotals();
+ }
+ }
+
+ /**
+ * Returns order amount, that is excluded from tax calculations
+ *
+ * @return float
+ * @access protected
+ */
+ protected function getTaxExempt()
+ {
+ $sql = 'SELECT SUM(oi.Quantity * oi.Price)
+ FROM ' . TABLE_PREFIX . 'OrderItems AS oi
+ LEFT JOIN ' . TABLE_PREFIX . 'Products AS p ON p.ProductId = oi.ProductId
+ WHERE p.Type = 6 AND oi.OrderId = ' . $this->GetDBField('OrderId');
+
+ return $this->Conn->GetOne($sql);
}
function UpdateTotals()
{
$total = 0;
$total += $this->GetDBField('SubTotal');
- if ($this->GetDBField('ShippingTaxable')) $total += $this->GetDBField('ShippingCost');
- if ($this->GetDBField('ProcessingTaxable')) $total += $this->GetDBField('ProcessingFee');
- $this->SetDBField('AmountWithoutVAT', $total);
- $total += $this->GetDBField('VAT');
+ if ( $this->GetDBField('ShippingTaxable') ) {
+ $total += $this->GetDBField('ShippingCost');
+ }
+
+ if ( $this->GetDBField('ProcessingTaxable') ) {
+ $total += $this->GetDBField('ProcessingFee');
+ }
+
+ if ( $this->GetDBField('VATIncluded') ) {
+ $tax_exempt = $this->getTaxExempt();
- if (!$this->GetDBField('ShippingTaxable')) $total += $this->GetDBField('ShippingCost');
- if (!$this->GetDBField('ProcessingTaxable')) $total += $this->GetDBField('ProcessingFee');
+ $vat_percent = $this->GetDBField('VATPercent');
+ $this->SetDBField('VAT', round(($total - $tax_exempt) * $vat_percent / (100 + $vat_percent), 2));
+ $this->SetDBField('AmountWithoutVAT', $total - $this->GetDBField('VAT'));
+ }
+ else {
+ $this->SetDBField('AmountWithoutVAT', $total);
+ $total += $this->GetDBField('VAT');
+ }
+
+ if ( !$this->GetDBField('ShippingTaxable') ) {
+ $total += $this->GetDBField('ShippingCost');
+ }
+
+ if ( !$this->GetDBField('ProcessingTaxable') ) {
+ $total += $this->GetDBField('ProcessingFee');
+ }
$total += $this->GetDBField('InsuranceFee');
$this->SetDBField('TotalAmount', $total);
}
function getTotalAmount()
{
return $this->GetDBField('SubTotal') +
$this->GetDBField('ShippingCost') +
- $this->GetDBField('VAT') +
+ ($this->GetDBField('VATIncluded') ? 0 : $this->GetDBField('VAT')) +
$this->GetDBField('ProcessingFee') +
$this->GetDBField('InsuranceFee') -
$this->GetDBField('GiftCertificateDiscount');
}
function requireCreditCard()
{
$sql = 'SELECT RequireCCFields
FROM ' . $this->Application->getUnitOption('pt', 'TableName') . ' pt
LEFT JOIN '.TABLE_PREFIX.'Gateways gw ON gw.GatewayId = pt.GatewayId
WHERE pt.PaymentTypeId = ' . $this->GetDBField('PaymentType');
return $this->Conn->GetOne($sql);
}
function getNextSubNumber()
{
$table = $this->Application->GetLiveName($this->TableName);
$sql = 'SELECT MAX(SubNumber) FROM '.$table.' WHERE Number = '.$this->GetDBField('Number');
return $this->Conn->GetOne($sql) + 1;
}
function ResetAddress($prefix)
{
$fields = Array('To','Company','Phone','Fax','Email','Address1','Address2','City','State','Zip','Country');
foreach($fields as $field)
{
$this->SetDBField($prefix.$field, $this->Fields[$prefix.$field]['default']);
}
}
function IsProfileAddress($address_type)
{
return $this->Application->GetVar($this->Prefix.'_IsProfileAddress');
}
// ===== Gift Certificates Related =====
function RecalculateGift(&$event)
{
$gc_id = $this->GetDBField('GiftCertificateId');
if ($gc_id < 1) {
return;
}
$gc =& $this->Application->recallObject('gc', null, Array('skip_autoload' => true));
/* @var $gc kDBItem */
$gc->Load($gc_id);
if ($gc->GetDBField('Status') == gcDISABLED) {
// disabled GC
$this->SetDBField('GiftCertificateId', 0);
$this->SetDBField('GiftCertificateDiscount', 0);
// disabled
return;
}
$debit = $gc->GetDBField('Debit') + $this->GetDBField('GiftCertificateDiscount');
$this->UpdateTotals();
$total = $this->GetDBField('TotalAmount');
$gift_certificate_discount = $debit >= $total ? $total : $debit;
$this->SetDBField('TotalAmount', $total - $gift_certificate_discount);
$this->GetDBField('GiftCertificateDiscount', $gift_certificate_discount);
$debit -= $gift_certificate_discount;
$gc->SetDBField('Debit', $debit);
$gc->SetDBField('Status', $debit > 0 ? gcENABLED : gcUSED);
$gc->Update();
if ($gift_certificate_discount == 0) {
$this->RemoveGiftCertificate($object);
$this->setCheckoutError(OrderCheckoutErrorType::GIFT_CERTIFICATE, OrderCheckoutError::GC_REMOVED_AUTOMATICALLY);
}
$this->SetDBField('GiftCertificateDiscount', $gift_certificate_discount);
}
function RemoveGiftCertificate()
{
$gc_id = $this->GetDBField('GiftCertificateId');
$gc =& $this->Application->recallObject('gc', null, Array('skip_autoload' => true));
/* @var $gc kDBItem */
$gc->Load($gc_id);
$debit = $gc->GetDBField('Debit') + $this->GetDBField('GiftCertificateDiscount');
if ($gc->isLoaded() && ($debit > 0)) {
$gc->SetDBField('Debit', $debit);
$gc->SetDBField('Status', gcENABLED);
$gc->Update();
}
$this->SetDBField('GiftCertificateId', 0);
$this->SetDBField('GiftCertificateDiscount', 0);
}
/**
* Sets checkout error
*
* @param int $error_type = {product,coupon,gc}
* @param int $error_code
* @param int $product_id - {ProductId}:{OptionsSalt}:{BackOrderFlag}:{FieldName}
*/
function setCheckoutError($error_type, $error_code, $product_id = null)
{
$errors = $this->Application->RecallVar('checkout_errors');
$errors = $errors ? unserialize($errors) : Array ();
if ( isset($product_id) ) {
$error_type .= ':' . $product_id;
// any error takes priority over FIELD_UPDATE_SUCCESS error
if ( isset($errors[$error_type]) && $error_code == OrderCheckoutError::FIELD_UPDATE_SUCCESS ) {
return ;
}
}
if ( is_numeric($error_code) ) {
$errors[$error_type] = $error_code;
}
else {
unset($errors[$error_type]);
}
if ( $this->Application->isDebugMode() ) {
$this->Application->Debugger->appendHTML('CO_ERROR: ' . $error_type . ' - ' . $error_code);
}
$this->Application->StoreVar('checkout_errors', serialize($errors));
}
}
\ No newline at end of file
Index: branches/5.2.x/units/orders/orders_config.php
===================================================================
--- branches/5.2.x/units/orders/orders_config.php (revision 14883)
+++ branches/5.2.x/units/orders/orders_config.php (revision 14884)
@@ -1,588 +1,594 @@
<?php
/**
* @version $Id$
* @package In-Commerce
* @copyright Copyright (C) 1997 - 2009 Intechnic. All rights reserved.
* @license Commercial License
* This software is protected by copyright law and international treaties.
* Unauthorized reproduction or unlicensed usage of the code of this program,
* or any portion of it may result in severe civil and criminal penalties,
* and will be prosecuted to the maximum extent possible under the law
* See http://www.in-portal.org/commercial-license for copyright notices and details.
*/
defined('FULL_PATH') or die('restricted access!');
$config = Array (
'Prefix' => 'ord',
'ItemClass' => Array ('class' => 'OrdersItem', 'file' => 'orders_item.php', 'build_event' => 'OnItemBuild'),
'ListClass' => Array ('class' => 'kDBList', 'file' => '', 'build_event' => 'OnListBuild'),
'EventHandlerClass' => Array ('class' => 'OrdersEventHandler', 'file' => 'orders_event_handler.php', 'build_event' => 'OnBuild'),
'TagProcessorClass' => Array ('class' => 'OrdersTagProcessor', 'file' => 'orders_tag_processor.php', 'build_event' => 'OnBuild'),
'ValidatorClass' => 'OrderValidator',
'AutoLoad' => true,
'RegisterClasses' => Array (
Array ('pseudo' => 'OrderCalculator', 'class' => 'OrderCalculator', 'file' => 'order_calculator.php', 'build_event' => ''),
Array ('pseudo' => 'OrderManager', 'class' => 'OrderManager', 'file' => 'order_manager.php', 'build_event' => ''),
Array ('pseudo' => 'OrderValidator', 'class' => 'OrderValidator', 'file' => 'order_validator.php', 'build_event' => '', 'require_classes' => 'kValidator'),
),
'Hooks' => Array (
Array (
'Mode' => hAFTER,
'Conditional' => false,
'HookToPrefix' => 'ord',
'HookToSpecial' => '',
'HookToEvent' => Array ( 'OnPreSave' ),
'DoPrefix' => '',
'DoSpecial' => '',
'DoEvent' => 'OnRecalculateItems',
),
Array(
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => '',
'HookToSpecial' => '',
'HookToEvent' => Array( 'OnUpdateCart', 'OnUpdateCartJSON', 'OnCheckout' ),
'DoPrefix' => '',
'DoSpecial' => '',
'DoEvent' => 'OnApplyCoupon',
),
Array (
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => '',
'HookToSpecial' => '',
'HookToEvent' => Array( 'OnUpdateCart', 'OnUpdateCartJSON', 'OnCheckout' ),
'DoPrefix' => '',
'DoSpecial' => '',
'DoEvent' => 'OnApplyGiftCertificate',
),
Array (
'Mode' => hAFTER,
'Conditional' => false,
'HookToPrefix' => 'u',
'HookToSpecial' => '',
'HookToEvent' => Array ( 'OnCreate' ),
'DoPrefix' => '',
'DoSpecial' => '',
'DoEvent' => 'OnUserCreate',
),
Array (
'Mode' => hBEFORE,
'Conditional' => false,
'HookToPrefix' => 'u',
'HookToSpecial' => '',
'HookToEvent' => Array ('OnCheckExpiredMembership'),
'DoPrefix' => '',
'DoSpecial' => '',
'DoEvent' => 'OnCheckRecurringOrders',
),
Array (
'Mode' => hAFTER,
'Conditional' => false,
'HookToPrefix' => 'u',
'HookToSpecial' => '',
'HookToEvent' => Array ( 'OnAfterLogin' ),
'DoPrefix' => '',
'DoSpecial' => '',
'DoEvent' => 'OnUserLogin',
),
Array (
'Mode' => hBEFORE, // before because OnInpLogin is called after real in-portal login and uses data from hooks
'Conditional' => false,
'HookToPrefix' => 'u',
'HookToSpecial' => '',
'HookToEvent' => Array ( 'OnInpLogin' ),
'DoPrefix' => '',
'DoSpecial' => '',
'DoEvent' => 'OnUserLogin',
),
Array(
'Mode' => hAFTER,
'Conditional' => false,
'HookToPrefix' => 'adm',
'HookToSpecial' => '*',
'HookToEvent' => Array('OnStartup'),
'DoPrefix' => '',
'DoSpecial' => '',
'DoEvent' => 'OnRestoreOrder',
),
),
'AggregateTags' => Array (
Array (
'AggregateTo' => 'orditems',
'AggregatedTagName' => 'LinkRemoveFromCart',
'LocalTagName' => 'Orditems_LinkRemoveFromCart',
),
Array (
'AggregateTo' => 'orditems',
'AggregatedTagName' => 'ProductLink',
'LocalTagName' => 'Orderitems_ProductLink',
),
Array (
'AggregateTo' => 'orditems',
'AggregatedTagName' => 'ProductExists',
'LocalTagName' => 'Orderitems_ProductExists',
),
),
'QueryString' => Array (
1 => 'id',
2 => 'Page',
3 => 'PerPage',
4 => 'event',
5 => 'mode',
),
'IDField' => 'OrderId',
'StatusField' => Array ('Status'), // field, that is affected by Approve/Decline events
'ViewMenuPhrase' => 'la_title_Orders',
'CatalogTabIcon' => 'icon16_item.png',
'TitleField' => 'OrderNumber',
'TitlePresets' => Array (
'default' => Array (
'new_status_labels' => Array ('ord' => '!la_title_Adding_Order!'),
'edit_status_labels' => Array ('ord' => '!la_title_Editing_Order!'),
'new_titlefield' => Array ('ord' => '!la_title_New_Order!'),
),
'orders_incomplete' => Array ( 'prefixes' => Array ('ord.incomplete_List'),
'format' => "!la_title_IncompleteOrders!",
),
'orders_pending' => Array ( 'prefixes' => Array ('ord.pending_List'),
'format' => "!la_title_PendingOrders!",
),
'orders_backorders' => Array ( 'prefixes' => Array ('ord.backorders_List'),
'format' => "!la_title_BackOrders!",
),
'orders_toship' => Array ( 'prefixes' => Array ('ord.toship_List'),
'format' => "!la_title_OrdersToShip!",
),
'orders_processed' => Array ( 'prefixes' => Array ('ord.processed_List'),
'format' => "!la_title_OrdersProcessed!",
),
'orders_returns' => Array ( 'prefixes' => Array ('ord.returns_List'),
'format' => "!la_title_OrdersReturns!",
),
'orders_denied' => Array ( 'prefixes' => Array ('ord.denied_List'),
'format' => "!la_title_OrdersDenied!",
),
'orders_archived' => Array ( 'prefixes' => Array ('ord.archived_List'),
'format' => "!la_title_OrdersArchived!",
),
'orders_search' => Array ( 'prefixes' => Array ('ord.search_List'),
'format' => "!la_title_OrdersSearch!",
),
'orders_edit_general' => Array ('prefixes' => Array ('ord'), 'format' => "#ord_status# '#ord_titlefield#' - !la_title_General!"),
'orders_edit_billing' => Array ('prefixes' => Array ('ord'), 'format' => "#ord_status# '#ord_titlefield#' - !la_title_OrderBilling!"),
'orders_edit_shipping' => Array ('prefixes' => Array ('ord'), 'format' => "#ord_status# '#ord_titlefield#' - !la_title_OrderShipping!"),
'orders_edit_items' => Array ('prefixes' => Array ('ord', 'orditems_List'), 'format' => "#ord_status# '#ord_titlefield#' - !la_title_OrderItems!"),
'orders_edit_preview' => Array ('prefixes' => Array ('ord'), 'format' => "#ord_status# '#ord_titlefield#' - !la_title_OrderPreview!"),
'orders_gw_result' => Array ('prefixes' => Array ('ord'), 'format' => "!la_title_OrderGWResult!"),
'orders_export' => Array ('format' => '!la_title_OrdersExport!'),
'orders_product_edit' => Array ('format' => '!la_title_Editing_Order_Item!'),
),
'EditTabPresets' => Array (
'Default' => Array (
'general' => Array ('title' => 'la_tab_General', 't' => 'in-commerce/orders/orders_edit', 'priority' => 1),
'items' => Array ('title' => 'la_tab_Items', 't' => 'in-commerce/orders/orders_edit_items', 'priority' => 2),
'shipping' => Array ('title' => 'la_tab_Shipping', 't' => 'in-commerce/orders/orders_edit_shipping', 'priority' => 3),
'billing' => Array ('title' => 'la_tab_Billing', 't' => 'in-commerce/orders/orders_edit_billing', 'priority' => 4),
'preview' => Array ('title' => 'la_tab_Preview', 't' => 'in-commerce/orders/orders_edit_preview', 'priority' => 5),
),
),
'PermSection' => Array ('main' => 'in-commerce:orders'),
'Sections' => Array (
'in-commerce:orders' => Array (
'parent' => 'in-commerce',
'icon' => 'in-commerce:orders',
'label' => 'la_tab_Orders',
'url' => Array ('t' => 'in-commerce/orders/orders_pending_list', 'pass' => 'm'),
'permissions' => Array ('view', 'add', 'edit', 'delete', 'advanced:approve', 'advanced:deny', 'advanced:archive', 'advanced:place', 'advanced:process', 'advanced:ship', 'advanced:reset_to_pending'),
'priority' => 1,
'type' => stTREE,
),
),
'SectionAdjustments' => Array (
'in-portal:visits' => Array (
'url' => Array ('t' => 'in-commerce/visits/visits_list_incommerce', 'pass' => 'm'),
),
),
'StatisticsInfo' => Array (
'pending' => Array (
'icon' => 'core:icon16_item.png',
'label' => 'la_title_Orders',
'js_url' => "#url#",
'url' => Array ('t' => 'in-commerce/orders/orders_pending_list', 'pass' => 'm'),
'status' => ORDER_STATUS_PENDING,
),
),
'TableName' => TABLE_PREFIX . 'Orders',
'CalculatedFields' => Array (
'' => Array (
'CustomerName' => 'IF( ISNULL(u.Username), IF (%1$s.PortalUserId = ' . USER_ROOT . ', \'root\', IF (%1$s.PortalUserId = ' . USER_GUEST . ', \'Guest\', \'n/a\')), CONCAT(u.FirstName,\' \',u.LastName) )',
'Username' => 'IF( ISNULL(u.Username),\'root\',u.Username)',
'OrderNumber' => 'CONCAT(LPAD(Number,6,"0"),\'-\',LPAD(SubNumber,3,"0") )',
'SubtotalWithoutDiscount' => '(SubTotal + DiscountTotal)',
'SubtotalWithDiscount' => '(SubTotal)',
- 'AmountWithoutVAT' => '(SubTotal+IF(ShippingTaxable=1, ShippingCost, 0)+IF(ProcessingTaxable=1, ProcessingFee, 0))',
- 'TotalAmount' => 'SubTotal+ShippingCost+VAT+ProcessingFee+InsuranceFee-GiftCertificateDiscount',
+ 'AmountWithoutVAT' => '(SubTotal+IF(ShippingTaxable=1, ShippingCost, 0)+IF(ProcessingTaxable=1, ProcessingFee, 0)-IF(VATIncluded=1,VAT,0))',
+ 'TotalAmount' => 'SubTotal+ShippingCost+IF(VATIncluded=1,0,VAT)+ProcessingFee+InsuranceFee-GiftCertificateDiscount',
'CouponCode' => 'pc.Code',
'CouponName' => 'pc.Name',
'AffiliateUser' => 'IF( LENGTH(au.Username),au.Username,\'!la_None!\')',
'AffiliatePortalUserId' => 'af.PortalUserId',
'GiftCertificateCode' => 'gc.Code',
'GiftCertificateRecipient' => 'gc.Recipient',
'ShippingSubTotal' => '%1$s.ShippingCost + %1$s.InsuranceFee',
),
'myorders' => Array (
'OrderNumber' => 'CONCAT(LPAD(Number,6,"0"),\'-\',LPAD(SubNumber,3,"0") )',
'SubtotalWithoutDiscount' => '(SubTotal + DiscountTotal)',
'SubtotalWithDiscount' => '(SubTotal)',
- 'AmountWithoutVAT' => '(SubTotal+IF(ShippingTaxable=1, ShippingCost, 0)+IF(ProcessingTaxable=1, ProcessingFee, 0))',
- 'TotalAmount' => 'SubTotal+ShippingCost+VAT+ProcessingFee+InsuranceFee-GiftCertificateDiscount',
+ 'AmountWithoutVAT' => '(SubTotal+IF(ShippingTaxable=1, ShippingCost, 0)+IF(ProcessingTaxable=1, ProcessingFee, 0)-IF(VATIncluded=1,VAT,0))',
+ 'TotalAmount' => 'SubTotal+ShippingCost+IF(VATIncluded=1,0,VAT)+ProcessingFee+InsuranceFee-GiftCertificateDiscount',
/*'ItemsCount' => 'COUNT(%1$s.OrderId)',*/
'ShippingSubTotal' => '%1$s.ShippingCost + %1$s.InsuranceFee',
),
),
// %1$s - table name of object
// %2$s - calculated fields
'ListSQLs' => Array (
'' => ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.PortalUserId = u.PortalUserId
LEFT JOIN '.TABLE_PREFIX.'ProductsCoupons pc ON %1$s.CouponId = pc.CouponId
LEFT JOIN '.TABLE_PREFIX.'GiftCertificates gc ON %1$s.GiftCertificateId = gc.GiftCertificateId
LEFT JOIN '.TABLE_PREFIX.'Affiliates af ON %1$s.AffiliateId = af.AffiliateId
LEFT JOIN '.TABLE_PREFIX.'PortalUser au ON af.PortalUserId = au.PortalUserId',
'myorders' => ' SELECT %1$s.* %2$s
FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.PortalUserId = u.PortalUserId',
// LEFT JOIN '.TABLE_PREFIX.'OrderItems ON %1$s.OrderId = '.TABLE_PREFIX.'OrderItems.OrderId',
),
'ItemSQLs' => Array (
'' => ' SELECT %1$s.* %2$s FROM %1$s
LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.PortalUserId = u.PortalUserId
LEFT JOIN '.TABLE_PREFIX.'ProductsCoupons pc ON %1$s.CouponId = pc.CouponId
LEFT JOIN '.TABLE_PREFIX.'GiftCertificates gc ON %1$s.GiftCertificateId = gc.GiftCertificateId
LEFT JOIN '.TABLE_PREFIX.'Affiliates af ON %1$s.AffiliateId = af.AffiliateId
LEFT JOIN '.TABLE_PREFIX.'PortalUser au ON af.PortalUserId = au.PortalUserId',
),
'SubItems' => Array ('orditems'),
'ListSortings' => Array (
'' => Array (
'Sorting' => Array ('OrderDate' => 'desc'),
)
),
'Fields' => Array (
'OrderId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0, 'filter_type' => 'equals'),
'Number' => Array ('type' => 'int', 'required' =>1, 'formatter' => 'kFormatter', 'unique' =>Array ('SubNumber'), 'format' => '%06d', 'max_value_inc'>999999, 'not_null' => 1, 'default' => 0),
'SubNumber' => Array ('type' => 'int', 'required' =>1, 'formatter' => 'kFormatter', 'unique' =>Array ('Number'), 'format' => '%03d', 'max_value_inc'>999, 'not_null' => 1, 'default' => 0),
'Status' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' =>Array (0=> 'la_Incomplete',1=> 'la_Pending',2=> 'la_BackOrders',3=> 'la_ToShip',4=> 'la_Processed',5=> 'la_Denied',6=> 'la_Archived'), 'use_phrases' =>1, 'not_null' => 1, 'default' => 0, 'filter_type' => 'equals'),
'OnHold' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes'), 'use_phrases' => 1,
'not_null' => 1, 'default' => 0,
),
'OrderDate' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'required' => 1, 'default' => '#NOW#'),
'PortalUserId' =>Array ('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'), 'options' =>Array (USER_ROOT => 'root', USER_GUEST => 'Guest'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'PortalUser WHERE `%s` = \'%s\'', 'left_key_field' => 'PortalUserId', 'left_title_field' => 'Username', 'required' =>1, 'not_null' =>1, 'default' =>-1),
'OrderIP' => Array ('type' => 'string', 'not_null' => 1, 'default' => '', 'filter_type' => 'like'),
'UserComment' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => NULL),
'AdminComment' => Array ('type' => 'string', 'formatter' => 'kFormatter', 'using_fck' => 1, 'default' => NULL),
'BillingTo' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'BillingCompany' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'BillingPhone' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'BillingFax' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'BillingEmail' => Array (
'type' => 'string',
'formatter' => 'kFormatter',
'regexp' => '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i',
'error_msgs' => Array ('invalid_format' => '!la_invalid_email!', 'unique' => '!lu_email_already_exist!'),
'not_null' => 1, 'default' => '',
),
'BillingAddress1' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'BillingAddress2' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'BillingCity' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'BillingState' => Array (
'type' => 'string',
'formatter' => 'kOptionsFormatter',
'options' => Array (),
'option_key_field' => 'DestAbbr',
'option_title_field' => 'Translation',
'not_null' => 1, 'default' => '',
),
'BillingZip' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'BillingCountry' => Array(
'type' => 'string',
'formatter' => 'kOptionsFormatter',
'options_sql' => ' SELECT IF(l%2$s_Name = "", l%3$s_Name, l%2$s_Name) AS Name, IsoCode
FROM '.TABLE_PREFIX.'CountryStates
WHERE Type = ' . DESTINATION_TYPE_COUNTRY . '
ORDER BY Name',
'option_key_field' => 'IsoCode', 'option_title_field' => 'Name',
'not_null' => 1, 'default' => 'USA'
),
'VAT' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'not_null' =>1, 'default' => '0', 'format' => '%01.2f'),
'VATPercent' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'not_null' =>1, 'default' => '0', 'format' => '%01.3f'),
+ 'VATIncluded' => Array (
+ 'type' => 'int',
+ 'formatter' => 'kOptionsFormatter',
+ 'options' => Array (0 => 'la_No', 1 => 'la_Yes'), 'use_phrases' => 1,
+ 'not_null' => 1, 'default' => 0,
+ ),
'PaymentType' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options_sql' => 'SELECT %s
FROM ' . TABLE_PREFIX . 'PaymentTypes
WHERE Status = 1
ORDER BY Priority DESC, Name ASC',
'option_key_field' => 'PaymentTypeId', 'option_title_field' => 'Description',
'not_null' => 1, 'default' => 0
),
'PaymentAccount' => Array ('type' => 'string', 'not_null' => 1, 'cardtype_field' => 'PaymentCardType', 'default' => '', 'filter_type' => 'like'),
'PaymentNameOnCard' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'PaymentCCExpDate' => Array ('type' => 'string', 'formatter' => 'kCCDateFormatter', 'month_field' => 'PaymentCCExpMonth', 'year_field' => 'PaymentCCExpYear', 'not_null' => 1, 'default' => ''),
'PaymentCardType' => Array ('type' => 'string', 'not_null' => 1, 'formatter' => 'kOptionsFormatter', 'options' => Array ('' => '', '1' => 'Visa', '2' => 'Mastercard', '3' => 'Amex', '4' => 'Discover', '5' => 'Diners Club', '6' => 'JBC'), 'default' => ''),
'PaymentExpires' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => '#NOW#'),
'ShippingTo' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingCompany' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingPhone' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingFax' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingEmail' => Array (
'type' => 'string',
'formatter' => 'kFormatter',
'regexp' => '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i',
'error_msgs' => Array ('invalid_format' => '!la_invalid_email!'),
'not_null' => 1, 'default' => '',
),
'ShippingAddress1' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingAddress2' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingCity' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingState' => Array (
'type' => 'string', 'formatter' => 'kOptionsFormatter',
'options' => Array (),
'option_key_field' => 'DestAbbr', 'option_title_field' => 'Translation',
'not_null' => 1, 'default' => ''),
'ShippingZip' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingCountry' => Array(
'type' => 'string', 'formatter' => 'kOptionsFormatter',
'options_sql' => ' SELECT IF(l%2$s_Name = "", l%3$s_Name, l%2$s_Name) AS Name, IsoCode
FROM '.TABLE_PREFIX.'CountryStates
WHERE Type = ' . DESTINATION_TYPE_COUNTRY . '
ORDER BY Name',
'option_key_field' => 'IsoCode', 'option_title_field' => 'Name',
'not_null' => 1, 'default' => 'USA'
),
'ShippingType' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options_sql' => 'SELECT %s
FROM ' . TABLE_PREFIX . 'ShippingType
WHERE Status = 1',
'option_key_field' => 'ShippingID',
'option_title_field' => 'Name',
'not_null' => 1, 'default' => 0,
),
'ShippingCost' => Array ('type' => 'double', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'not_null' => 1, 'default' => '0.00'),
'ShippingCustomerAccount' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingTracking' => Array ('type' => 'string', 'not_null' => 1, 'default' => ''),
'ShippingDate' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => null),
'SubTotal' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'not_null' => 1, 'default' => '0.00'),
'ReturnTotal' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'not_null' => 1, 'default' => '0.00'),
'CostTotal' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'not_null' => 1, 'default' => '0.00'),
'OriginalAmount' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'not_null' => 1, 'default' => '0.00'),
'ShippingOption' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (
0 => 'la_ship_all_together', 1 => 'la_ship_backorder_separately', 2 => 'la_ship_backorders_upon_avail',
),
'use_phrases' => 1, 'not_null' => 1, 'default' => 0,
),
'ShippingGroupOption' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter', 'use_phrases' => 1,
'options' => Array (0 => 'la_opt_AutoGroupShipments', 1 => 'la_opt_ManualGroupShipments'),
'not_null' => 1, 'default' => 0,
),
'GiftCertificateId' => Array ('type' => 'int', 'default' => null),
'GiftCertificateDiscount' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'not_null' => 1, 'default' => '0.00',),
'ShippingInfo' => Array ('type' => 'string', 'default' => NULL),
'CouponId' => Array ('type' => 'int', 'default' => null),
'CouponDiscount' => Array ('type' => 'float', 'not_null' => 1, 'default' => '0.00', 'formatter' => 'kFormatter', 'format' => '%01.2f'),
'DiscountTotal' => Array ('type' => 'float', 'not_null' => 1, 'default' => '0.00', 'formatter' => 'kFormatter', 'format' => '%01.2f'),
'TransactionStatus' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_opt_Invalid', 1 => 'la_opt_Verified', 2 => 'la_opt_Penging'),
'use_phrases' =>1, 'not_null' => 1, 'default' => 2,
),
'GWResult1' => Array ('type' => 'string', 'formatter' => 'kSerializedFormatter', 'default' => NULL),
'GWResult2' => Array ('type' => 'string', 'formatter' => 'kSerializedFormatter', 'default' => NULL),
'AffiliateId' => Array ('type' => 'int', 'formatter' => 'kLEFTFormatter', 'error_msgs' => Array ('invalid_option' => '!la_error_UserNotFound!'), 'options' => Array (0 => 'lu_None'), 'left_sql' => 'SELECT %s FROM '.TABLE_PREFIX.'Affiliates af LEFT JOIN '.TABLE_PREFIX.'PortalUser pu ON pu.PortalUserId = af.PortalUserId WHERE `%s` = \'%s\'', 'left_key_field' => 'AffiliateId', 'left_title_field' => 'Username', 'not_null' =>1, 'default' =>0),
'VisitId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'AffiliateCommission' => Array ('type' => 'double', 'formatter' => 'kFormatter', 'format' => '%.02f', 'not_null' => 1, 'default' => '0.0000'),
'ProcessingFee' => Array ('type' => 'double', 'formatter' => 'kFormatter', 'format' => '%.02f', 'not_null' => '0', 'default' => '0.0000'),
'InsuranceFee' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'not_null' => 1, 'default' => '0.00'),
'ShippingTaxable' => Array ('type' => 'int', 'not_null' => 0, 'default' => 0),
'ProcessingTaxable' => Array ('type' => 'int', 'not_null' => 0, 'default' => 0),
'IsRecurringBilling' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 0, 'not_null' => 1,
),
'ChargeOnNextApprove' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes',), 'use_phrases' => 1,
'default' => 0, 'not_null' => 1,
),
'NextCharge' => Array ('type' => 'int', 'formatter' => 'kDateFormatter', 'default' => null),
'GroupId' => Array ('type' => 'int', 'not_null' => 1, 'default' => 0),
'GoogleOrderNumber' => Array ('type' => 'string', 'default' => NULL), // MySQL BIGINT UNSIGNED = 8 Bytes, PHP int = 4 Bytes -> threat as string
),
'VirtualFields' => Array (
'CustomerName' => Array ('type' => 'string', 'default' => '', 'filter_type' => 'like'),
'TotalAmount' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'default' => '0.00'),
'AmountWithoutVAT' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'default' => '0.00'),
'SubtotalWithDiscount' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'default' => '0.00'),
'SubtotalWithoutDiscount' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'default' => '0.00'),
'ShippingSubTotal' => Array ('type' => 'float', 'formatter' => 'kFormatter', 'format' => '%01.2f', 'default' => '0.00'),
'OrderNumber' => Array ('type' => 'string', 'default' => '', 'filter_type' => 'like'),
'CouponCode' => Array ('type' => 'string', 'default' => ''),
'CouponName' => Array ('type' => 'string', 'default' => ''),
'GiftCertificateCode' => Array ('type' => 'string', 'default' => ''),
'GiftCertificateRecipient' => Array ('type' => 'string', 'default' => ''),
// for ResetToUser
'UserTo' => Array ('type' => 'string', 'default' => ''),
'UserCompany' => Array ('type' => 'string', 'default' => ''),
'UserPhone' => Array ('type' => 'string', 'default' => ''),
'UserFax' => Array ('type' => 'string', 'default' => ''),
'UserEmail' => Array ('type' => 'string', 'default' => ''),
'UserAddress1' => Array ('type' => 'string', 'default' => ''),
'UserAddress2' => Array ('type' => 'string', 'default' => ''),
'UserCity' => Array ('type' => 'string', 'default' => ''),
'UserState' => Array ('type' => 'string', 'default' => ''),
'UserZip' => Array ('type' => 'string', 'default' => ''),
'UserCountry' => Array ('type' => 'string', 'default' => ''),
// for Search
'Username' => Array ('type' => 'string', 'filter_type' => 'like', 'default' => ''),
'HasBackOrders' => Array ('type' => 'int', 'default' => 0),
'PaymentCVV2' => Array ('type' => 'string', 'default' => ''),
'AffiliateUser' => Array ('type' => 'string', 'filter_type' => 'like', 'default' => ''),
'AffiliatePortalUserId' => Array ('type' => 'int', 'default' => 0),
// export related fields: begin
'ExportFormat' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'CSV', /*2 => 'XML'*/), 'default' => 1),
'ExportFilename' => Array ('type' => 'string', 'default' => ''),
'FieldsSeparatedBy' => Array ('type' => 'string', 'default' => ','),
'FieldsEnclosedBy' => Array ('type' => 'string', 'default' => '"'),
'LineEndings' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'Windows', 2 => 'UNIX'), 'default' => 1),
'LineEndingsInside' => Array ('type' => 'int', 'formatter' => 'kOptionsFormatter', 'options' => Array (1 => 'CRLF', 2 => 'LF'), 'default' => 2),
'IncludeFieldTitles' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes'),
'use_phrases' => 1, 'default' => 1,
),
'ExportColumns' => Array ('type' => 'string', 'formatter' => 'kOptionsFormatter', 'options' => Array (), 'default' => ''),
'AvailableColumns' => Array ('type' => 'string', 'formatter' => 'kOptionsFormatter', 'options' => Array (), 'default' => ''),
'ExportPresets' => Array ('type' => 'string', 'formatter' => 'kOptionsFormatter', 'options' => Array (), 'default' => ''),
'ExportSavePreset' => Array (
'type' => 'int',
'formatter' => 'kOptionsFormatter',
'options' => Array (0 => 'la_No', 1 => 'la_Yes'),
'use_phrases' => 1, 'default' => 0,
),
'ExportPresetName' => Array ('type' => 'string', 'default' => ''),
// export related fields: end
// for "one step checkout"
'UserPassword' => Array (
'type' => 'string',
'formatter' => 'kPasswordFormatter', 'encryption_method' => 'md5', 'verify_field' => 'VerifyUserPassword',
'skip_empty' => 1, 'default' => 'd41d8cd98f00b204e9800998ecf8427e'
),
// for "Shipping Info" step during Checkout
'ShippingTypeId' => Array ('type' => 'array', 'default' => ''),
),
'Grids' => Array (
'Default' => Array (
'Icons' => Array (
'default' => 'icon16_item.png',
1 => 'icon16_pending.png',
5 => 'icon16_disabled.png',
'module' => 'core',
),
'Fields' => Array (
'OrderId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 70, ),
'OrderNumber' => Array ( 'data_block' => 'grid_ordernumber_td', 'filter_block' => 'grid_like_filter', 'width' => 100, ),
'OrderDate' => Array ( 'title' => 'la_col_OrderDate', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_date_range_filter', 'width' => 140, ),
'CustomerName' => Array ( 'title' => 'la_col_CustomerName', 'data_block' => 'grid_userlink_td', 'user_field' => 'PortalUserId', 'filter_block' => 'grid_like_filter', 'width' => 140, ),
'PaymentType' => Array ( 'data_block' => 'grid_billinglink_td', 'filter_block' => 'grid_options_filter', 'width' => 140, ),
'TotalAmount' => Array ( 'data_block' => 'grid_previewlink_td', 'filter_block' => 'grid_range_filter', 'width' => 140, ),
'AffiliateUser' => Array ( 'data_block' => 'grid_userlink_td', 'user_field' => 'AffiliatePortalUserId', 'filter_block' => 'grid_like_filter', 'width' => 140, ),
'OnHold' => Array ('filter_block' => 'grid_options_filter', 'width' => 100, ),
),
),
'Search' => Array (
'Icons' => Array (
'default' => 'icon16_item.png',
1 => 'icon16_pending.png',
5 => 'icon16_disabled.png',
'module' => 'core',
),
'Fields' => Array (
'OrderId' => Array ('title' => 'column:la_fld_Id', 'data_block' => 'grid_checkbox_td', 'filter_block' => 'grid_range_filter', 'width' => 70, ),
'OrderNumber' => Array ('data_block' => 'grid_ordernumber_td', 'filter_block' => 'grid_like_filter', 'width' => 100, ),
'Status' => Array ('filter_block' => 'grid_options_filter', 'filter_block' => 'grid_options_filter', 'width' => 100, ),
'OrderDate' => Array ('title' => 'la_col_OrderDate', 'filter_block' => 'grid_date_range_filter', 'width' => 140, ),
'CustomerName' => Array ('title' => 'la_col_CustomerName', 'data_block' => 'grid_userlink_td', 'user_field' => 'PortalUserId', 'filter_block' => 'grid_like_filter'),
'PaymentType' => Array ('data_block' => 'grid_billinglink_td', 'filter_block' => 'grid_options_filter'),
'TotalAmount' => Array ('data_block' => 'grid_previewlink_td', 'filter_block' => 'grid_range_filter'),
'AffiliateUser' => Array ('data_block' => 'grid_userlink_td', 'user_field' => 'AffiliatePortalUserId', 'filter_block' => 'grid_user_like_filter'),
'OrderIP' => Array ('filter_block' => 'grid_like_filter'),
'Username' => Array ('filter_block' => 'grid_user_like_filter'),
'PaymentAccount' => Array ('title' => 'column:la_fld_CreditCardNumber', 'filter_block' => 'grid_like_filter'),
),
),
),
);
\ No newline at end of file
Index: branches/5.2.x/admin_templates/orders/orders_edit_billing.tpl
===================================================================
--- branches/5.2.x/admin_templates/orders/orders_edit_billing.tpl (revision 14883)
+++ branches/5.2.x/admin_templates/orders/orders_edit_billing.tpl (revision 14884)
@@ -1,218 +1,220 @@
<inp2:adm_SetPopupSize width="820" height="570"/>
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" prefix="ord" section="in-commerce:orders" title_preset="orders_edit_billing" tab_preset="Default"/>
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('select', '<inp2:m_phrase label="la_ToolTip_Save" escape="1"/>', function() {
submit_event('ord','<inp2:ord_SaveEvent/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
submit_event('ord','OnCancelEdit');
}
) );
a_toolbar.AddButton( new ToolBarSeparator('sep1') );
a_toolbar.AddButton( new ToolBarButton('prev', '<inp2:m_phrase label="la_ToolTip_Prev" escape="1"/>', function() {
go_to_id('ord', '<inp2:ord_PrevId/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('next', '<inp2:m_phrase label="la_ToolTip_Next" escape="1"/>', function() {
go_to_id('ord', '<inp2:ord_NextId/>');
}
) );
<inp2:m_if check="ord_OrderEditable">
a_toolbar.AddButton( new ToolBarSeparator('sep2') );
a_toolbar.AddButton( new ToolBarButton('reset_to_user', '<inp2:m_phrase label="la_ToolTip_ResetToUser" escape="1"/>', function() {
submit_event('ord','OnResetToUser');
}
) );
a_toolbar.AddButton( new ToolBarButton('in-commerce:reset_to_shipping', '<inp2:m_phrase label="la_ToolTip_ResetToShipping" escape="1"/>', function() {
submit_event('ord','OnResetToShipping');
}
) );
</inp2:m_if>
a_toolbar.Render();
<inp2:m_if check="ord_IsSingle" >
a_toolbar.HideButton('prev');
a_toolbar.HideButton('next');
a_toolbar.HideButton('sep1');
a_toolbar.HideButton('sep2');
<inp2:m_else/>
<inp2:m_if check="ord_IsLast" >
a_toolbar.DisableButton('next');
</inp2:m_if>
<inp2:m_if check="ord_IsFirst" >
a_toolbar.DisableButton('prev');
</inp2:m_if>
</inp2:m_if>
</script>
</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
function OpenGWResults(field) {
openSelector('ord', '<inp2:m_Link template="in-commerce/orders/gw_results" pass="m,ord"/>&field=' + field, '', '500x400');
}
</script>
<inp2:m_DefineElement name="inp_gwresults" is_last="" as_label="" currency="" is_last="">
<inp2:m_RenderElement design="form_row" pass_params="1">
<td class="control-cell">
<inp2:m_if check="m_Param" name="display_field"><inp2:m_Param name="display_field"/>: <inp2:Field name="$field" format="$display_field"/></inp2:m_if>
<a href="javascript:OpenGWResults('<inp2:m_param name="field"/>')"><inp2:m_Phrase label="la_Details"/></a>
</td>
</inp2:m_RenderElement>
</inp2:m_DefineElement>
<inp2:m_RenderElement name="inp_edit_hidden" prefix="ord" field="Status" db="db"/>
<inp2:ord_SaveWarning name="grid_save_warning"/>
<inp2:ord_ErrorWarning name="form_error_warning"/>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="la_section_OrderBilling"/>
<inp2:m_if check="ord_OrderEditable">
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingTo" title="la_fld_BillingTo" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingCompany" title="la_fld_BillingCompany" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingPhone" title="la_fld_BillingPhone" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingFax" title="la_fld_BillingFax" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingEmail" title="la_fld_BillingEmail" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingAddress1" title="la_fld_BillingAddress1" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingAddress2" title="la_fld_BillingAddress2" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingCity" title="la_fld_BillingCity" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingState" title="la_fld_BillingState" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="BillingZip" title="la_fld_BillingZip" size="10"/>
<inp2:m_RenderElement name="inp_edit_options" prefix="ord" field="BillingCountry" title="la_fld_BillingCountry" size="20"/>
<inp2:m_RenderElement name="inp_edit_options" prefix="ord" field="PaymentType" title="la_fld_PaymentType" onchange="submit_event('ord','OnPreSave');"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="ord" field="IsRecurringBilling" title="la_fld_IsRecurringBilling"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="ord" field="NextCharge" title="la_fld_NextCharge"/>
+ <inp2:m_RenderElement name="inp_edit_checkbox" prefix="ord" field="VATIncluded"/>
<!--<inp2:m_RenderElement name="inp_gwresults" prefix="ord" display_field="score" field="VerificationResult" title="la_fld_VerificationResult" />-->
<inp2:m_if check="ord_UsingCreditCard">
<inp2:m_RenderElement name="subsection" title="la_section_CreditCard"/>
<inp2:m_RenderElement name="inp_edit_options" prefix="ord" field="PaymentCardType" title="la_fld_PaymentCardType"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="PaymentAccount" title="la_fld_CreditCardNumber" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="PaymentNameOnCard" title="la_fld_PaymentNameOnCard" size="20"/>
<inp2:m_RenderElement design="form_row" prefix="ord" field="PaymentCCExpDate" title="la_fld_PaymentCCExpDate">
<td class="control-cell">
<input type="text" size="3" maxlength="2" name="<inp2:ord_InputName field="PaymentCCExpMonth"/>" id="<inp2:ord_InputName field="PaymentCCExpMonth"/>" value="<inp2:ord_Field field="PaymentCCExpMonth"/>">
/
<input type="text" size="3" maxlength="2" name="<inp2:ord_InputName field="PaymentCCExpYear"/>" id="<inp2:ord_InputName field="PaymentCCExpYear"/>" value="<inp2:ord_Field field="PaymentCCExpYear"/>">
</td>
</inp2:m_RenderElement>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="PaymentCVV2" title="la_fld_PaymentCVV2" size="5" maxlength="5"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="ord" field="PaymentExpires" title="la_fld_PaymentExpires" size="16"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="ord" field="ChargeOnNextApprove" title="la_fld_ChargeOnNextApprove"/>
<inp2:m_else/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="PaymentAccount" title="la_fld_PaymentAccount" size="20"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="ord" field="PaymentExpires" title="la_fld_PaymentDate" size="16"/>
</inp2:m_if>
<inp2:m_if check="ord_Field" name="GWResult1" db="db">
<inp2:m_RenderElement name="inp_gwresults" prefix="ord" field="GWResult1" title="la_fld_AuthorizationResult" />
</inp2:m_if>
<inp2:m_if check="ord_Field" name="GWResult2" db="db">
<inp2:m_RenderElement name="inp_gwresults" prefix="ord" field="GWResult2" title="la_fld_CaptureResult" />
</inp2:m_if>
<inp2:m_else/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingTo" title="la_fld_BillingTo" size="40"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingCompany" title="la_fld_BillingCompany" size="40"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingPhone" title="la_fld_BillingPhone" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingFax" title="la_fld_BillingFax" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingEmail" title="la_fld_BillingEmail" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingAddress1" title="la_fld_BillingAddress1" size="40"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingAddress2" title="la_fld_BillingAddress2" size="40"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingCity" title="la_fld_BillingCity" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingState" title="la_fld_BillingState" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingZip" title="la_fld_BillingZip" size="10"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="BillingCountry" title="la_fld_BillingCountry" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="PaymentType" title="la_fld_PaymentType"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="ord" field="IsRecurringBilling" title="la_fld_IsRecurringBilling"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="ord" field="NextCharge" title="la_fld_NextCharge"/>
+ <inp2:m_RenderElement name="inp_label" prefix="ord" field="VATIncluded"/>
<inp2:m_RenderElement name="inp_gwresults" prefix="ord" field="VerificationResult" display_field="score" title="la_fld_VerificationResult" />
<inp2:m_if check="ord_UsingCreditCard">
<inp2:m_RenderElement name="subsection" title="la_section_CreditCard"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="PaymentCardType" title="la_fld_PaymentCardType"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="PaymentAccount" title="la_fld_CreditCardNumber"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="PaymentNameOnCard" title="la_fld_PaymentNameOnCard"/>
<inp2:m_RenderElement design="form_row" prefix="ord" field="PaymentCCExpDate" title="la_fld_PaymentCCExpDate">
<td class="control-cell">
<inp2:ord_Field field="PaymentCCExpMonth"/> / <inp2:ord_Field field="PaymentCCExpYear"/>
</td>
</inp2:m_RenderElement>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="PaymentCVV2" title="la_fld_PaymentCVV2"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="PaymentExpires" title="la_fld_PaymentExpires"/>
<inp2:m_else/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="PaymentAccount" title="la_fld_PaymentAccount"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="PaymentExpires" title="la_fld_PaymentDate"/>
</inp2:m_if>
<inp2:m_if check="ord_Field" name="GWResult1" db="db">
<inp2:m_RenderElement name="inp_gwresults" prefix="ord" field="GWResult1" title="la_fld_AuthorizationResult" />
</inp2:m_if>
<inp2:m_if check="ord_Field" name="GWResult2" db="db">
<inp2:m_RenderElement name="inp_gwresults" prefix="ord" field="GWResult2" title="la_fld_CaptureResult" />
</inp2:m_if>
</inp2:m_if>
<inp2:m_if check="ord_Field" name="CouponId">
<inp2:m_RenderElement name="inp_label" prefix="ord" field="CouponCode" title="la_fld_CouponCode" />
</inp2:m_if>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="DiscountTotal" title="la_fld_TotalSavings" />
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ReturnTotal" title="la_fld_TotalReturns" />
<inp2:m_if check="ord_FieldEquals" name="VAT" value="0.00">
<inp2:m_else />
<inp2:m_RenderElement name="inp_label" prefix="ord" field="AmountWithoutVAT" title="la_fld_SubTotal" />
<inp2:m_RenderElement name="inp_label" prefix="ord" field="VAT" title="la_fld_VAT" />
</inp2:m_if>
<inp2:m_if check="ord_Field" name="GiftCertificateId">
<inp2:m_RenderElement name="inp_label" prefix="ord" field="GiftCertificateCode" title="la_fld_GiftCertificateNumber" />
<inp2:m_RenderElement name="inp_label" prefix="ord" field="GiftCertificateDiscount" title="la_fld_GiftCertificateAmountApplied" />
</inp2:m_if>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="TotalAmount" title="la_fld_TotalAmount" />
<inp2:m_if check="ord_HasOriginalAmount" >
<inp2:m_RenderElement name="inp_label" prefix="ord" field="OriginalAmount" title="la_fld_OriginalAmount" />
</inp2:m_if>
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<input type="hidden" name="to_tab" value="Billing">
<input type="hidden" name="check_billing_address" value="true" />
<inp2:m_if check="ord_UsingCreditCard">
<input type="hidden" name="check_credit_card" value="true" />
</inp2:m_if>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Index: branches/5.2.x/install/install_schema.sql
===================================================================
--- branches/5.2.x/install/install_schema.sql (revision 14883)
+++ branches/5.2.x/install/install_schema.sql (revision 14884)
@@ -1,728 +1,729 @@
CREATE TABLE Addresses (
AddressId int(11) NOT NULL auto_increment,
PortalUserId int(11) NOT NULL default '0',
`To` varchar(255) NOT NULL default '',
Company varchar(255) NOT NULL default '',
Phone varchar(255) NOT NULL default '',
Fax varchar(255) NOT NULL default '',
Email varchar(255) NOT NULL default '',
Address1 varchar(255) NOT NULL default '',
Address2 varchar(255) NOT NULL default '',
City varchar(255) NOT NULL default '',
State char(2) NOT NULL default '',
Zip varchar(20) NOT NULL default '',
Country char(3) NOT NULL default '',
LastUsedAsBilling tinyint(4) unsigned NOT NULL default '0',
LastUsedAsShipping tinyint(4) unsigned NOT NULL default '0',
IsProfileAddress tinyint(4) NOT NULL default '0',
PRIMARY KEY (AddressId),
KEY PortalUserId (PortalUserId),
KEY LastUsedAsBilling (LastUsedAsBilling),
KEY LastUsedAsShipping (LastUsedAsShipping),
KEY IsProfileAddress (IsProfileAddress)
);
CREATE TABLE Currencies (
CurrencyId int(11) NOT NULL AUTO_INCREMENT,
ISO char(3) NOT NULL DEFAULT '',
Symbol varchar(255) DEFAULT NULL,
SymbolPosition tinyint(4) DEFAULT NULL,
`Name` varchar(255) NOT NULL DEFAULT '',
RateToPrimary double NOT NULL DEFAULT '1',
Modified int(11) DEFAULT NULL,
`Status` smallint(6) NOT NULL DEFAULT '1',
IsPrimary smallint(6) NOT NULL DEFAULT '0',
Priority int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (CurrencyId),
KEY Priority (Priority),
KEY IsPrimary (IsPrimary),
KEY Modified (Modified)
);
CREATE TABLE GatewayConfigFields (
GWConfigFieldId int(11) NOT NULL AUTO_INCREMENT,
SystemFieldName varchar(50) NOT NULL DEFAULT '',
FieldName varchar(100) NOT NULL DEFAULT '',
ElementType varchar(30) NOT NULL DEFAULT 'text',
ValueList mediumtext,
GatewayId int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (GWConfigFieldId),
KEY GatewayId (GatewayId)
);
CREATE TABLE GatewayConfigValues (
GWConfigValueId int(11) NOT NULL auto_increment,
GWConfigFieldId int(11) NOT NULL default '0',
PaymentTypeId int(11) NOT NULL default '0',
Value varchar(255) default NULL,
PRIMARY KEY (GWConfigValueId),
KEY GWConfigFieldId (GWConfigFieldId),
KEY PaymentTypeId (PaymentTypeId)
);
CREATE TABLE Gateways (
GatewayId int(11) NOT NULL auto_increment,
Name varchar(100) NOT NULL default '',
ClassName varchar(150) NOT NULL default '',
ClassFile varchar(255) NOT NULL default '',
RequireCCFields tinyint(4) NOT NULL default '0',
PRIMARY KEY (GatewayId)
);
CREATE TABLE Manufacturers (
ManufacturerId int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) NOT NULL DEFAULT '',
Description text,
URL varchar(255) NOT NULL DEFAULT '',
Logo varchar(255) NOT NULL DEFAULT '',
IsPopular int(10) unsigned NOT NULL DEFAULT '0',
Address1 varchar(255) DEFAULT NULL,
Address2 varchar(255) DEFAULT NULL,
City varchar(255) DEFAULT NULL,
State varchar(50) DEFAULT NULL,
Zip varchar(50) DEFAULT NULL,
Country varchar(255) DEFAULT NULL,
Phone varchar(50) DEFAULT NULL,
Fax varchar(50) DEFAULT NULL,
Email varchar(255) DEFAULT NULL,
PRIMARY KEY (ManufacturerId)
);
CREATE TABLE OrderItems (
OrderItemId int(11) NOT NULL auto_increment,
OrderId int(11) NOT NULL default '0',
ProductId int(11) NOT NULL default '0',
ProductName varchar(255) NOT NULL default '',
Quantity int(11) NOT NULL default '0',
QuantityReserved int(11) default NULL,
FlatPrice decimal(10,4) NOT NULL default '0.0000',
Price decimal(10,4) NOT NULL default '0.0000',
Cost double(10,4) NOT NULL default '0.0000',
BackOrderFlag tinyint(4) default '0',
Weight double default NULL,
ShippingTypeId varchar(255) default NULL,
ItemData text,
OptionsSalt int(11) default '0',
SplitShippingGroup int(11) NOT NULL default '0',
PackageNum int(11) NOT NULL default '0',
ReturnType tinyint(3) unsigned NOT NULL default '0',
ReturnAmount decimal(10,2) NOT NULL default '0.00',
ReturnedOn int(10) unsigned default NULL,
PRIMARY KEY (OrderItemId),
KEY OrderId (OrderId),
KEY ProductId (ProductId),
KEY BackOrderFlag (BackOrderFlag),
KEY PackageNum (PackageNum),
KEY ReturnType (ReturnType),
KEY ReturnedOn (ReturnedOn),
KEY Quantity (Quantity),
KEY QuantityReserved (QuantityReserved),
KEY OptionsSalt (OptionsSalt),
KEY SplitShippingGroup (SplitShippingGroup)
);
CREATE TABLE Orders (
OrderId int(11) NOT NULL AUTO_INCREMENT,
Number mediumint(9) NOT NULL DEFAULT '0',
SubNumber smallint(6) NOT NULL DEFAULT '0',
`Status` tinyint(3) unsigned NOT NULL DEFAULT '0',
OnHold tinyint(3) unsigned NOT NULL DEFAULT '0',
OrderDate int(10) unsigned DEFAULT NULL,
PortalUserId int(11) NOT NULL DEFAULT '-1',
OrderIP varchar(30) NOT NULL DEFAULT '',
UserComment text,
AdminComment text,
BillingTo varchar(255) NOT NULL DEFAULT '',
BillingCompany varchar(255) NOT NULL DEFAULT '',
BillingPhone varchar(255) NOT NULL DEFAULT '',
BillingFax varchar(255) NOT NULL DEFAULT '',
BillingEmail varchar(255) NOT NULL DEFAULT '',
BillingAddress1 varchar(255) NOT NULL DEFAULT '',
BillingAddress2 varchar(255) NOT NULL DEFAULT '',
BillingCity varchar(255) NOT NULL DEFAULT '',
BillingState varchar(255) NOT NULL DEFAULT '',
BillingZip varchar(255) NOT NULL DEFAULT '',
BillingCountry varchar(255) NOT NULL DEFAULT 'USA',
VAT decimal(20,4) NOT NULL DEFAULT '0.0000',
VATPercent decimal(20,4) NOT NULL DEFAULT '0.0000',
PaymentType tinyint(3) unsigned NOT NULL DEFAULT '0',
PaymentAccount varchar(255) NOT NULL DEFAULT '',
PaymentExpires int(10) unsigned DEFAULT NULL,
PaymentNameOnCard varchar(255) NOT NULL DEFAULT '',
PaymentCCExpDate varchar(5) NOT NULL DEFAULT '',
PaymentCardType varchar(255) NOT NULL DEFAULT '',
ShippingTo varchar(255) NOT NULL DEFAULT '',
ShippingCompany varchar(255) NOT NULL DEFAULT '',
ShippingPhone varchar(255) NOT NULL DEFAULT '',
ShippingFax varchar(255) NOT NULL DEFAULT '',
ShippingEmail varchar(255) NOT NULL DEFAULT '',
ShippingAddress1 varchar(255) NOT NULL DEFAULT '',
ShippingAddress2 varchar(255) NOT NULL DEFAULT '',
ShippingCity varchar(255) NOT NULL DEFAULT '',
ShippingState varchar(255) NOT NULL DEFAULT '',
ShippingZip varchar(255) NOT NULL DEFAULT '',
ShippingCountry varchar(255) NOT NULL DEFAULT 'USA',
ShippingType int(11) NOT NULL DEFAULT '0',
ShippingCost decimal(20,4) NOT NULL DEFAULT '0.0000',
ShippingCustomerAccount varchar(255) NOT NULL DEFAULT '',
ShippingTracking varchar(255) NOT NULL DEFAULT '',
ShippingDate int(11) DEFAULT NULL,
SubTotal decimal(20,4) unsigned NOT NULL DEFAULT '0.0000',
ReturnTotal decimal(20,4) NOT NULL DEFAULT '0.0000',
CostTotal decimal(20,4) NOT NULL DEFAULT '0.0000',
OriginalAmount decimal(20,4) NOT NULL DEFAULT '0.0000',
ShippingOption tinyint(4) NOT NULL DEFAULT '0',
ShippingInfo text,
CouponId int(11) DEFAULT NULL,
CouponDiscount decimal(20,4) NOT NULL DEFAULT '0.0000',
DiscountTotal decimal(10,4) NOT NULL DEFAULT '0.0000',
TransactionStatus tinyint(3) unsigned NOT NULL DEFAULT '2',
GWResult1 mediumtext,
GWResult2 mediumtext,
AffiliateId int(10) unsigned NOT NULL DEFAULT '0',
VisitId int(10) unsigned NOT NULL DEFAULT '0',
AffiliateCommission decimal(10,4) NOT NULL DEFAULT '0.0000',
ProcessingFee decimal(20,4) DEFAULT '0.0000',
InsuranceFee decimal(20,4) NOT NULL DEFAULT '0.0000',
ShippingTaxable tinyint(1) NOT NULL DEFAULT '0',
ProcessingTaxable tinyint(1) NOT NULL DEFAULT '0',
IsRecurringBilling tinyint(4) NOT NULL DEFAULT '0',
NextCharge int(10) unsigned DEFAULT NULL,
GroupId int(10) unsigned NOT NULL DEFAULT '0',
ChargeOnNextApprove tinyint(4) NOT NULL DEFAULT '0',
ShippingGroupOption tinyint(4) NOT NULL DEFAULT '0',
GiftCertificateId int(11) DEFAULT NULL,
GiftCertificateDiscount decimal(20,4) NOT NULL DEFAULT '0.0000',
GoogleOrderNumber bigint(20) unsigned DEFAULT NULL,
+ VATIncluded tinyint(1) unsigned NOT NULL DEFAULT 0,
PRIMARY KEY (OrderId),
KEY AffiliateId (AffiliateId),
KEY VisitId (VisitId),
KEY GoogleOrderNumber (GoogleOrderNumber),
KEY Number (Number),
KEY SubNumber (SubNumber),
KEY `Status` (`Status`),
KEY OrderDate (OrderDate),
KEY PaymentType (PaymentType),
KEY CouponId (CouponId),
KEY GroupId (GroupId),
KEY GiftCertificateId (GiftCertificateId)
);
CREATE TABLE GiftCertificates (
GiftCertificateId int(11) NOT NULL AUTO_INCREMENT,
OrderId int(11) DEFAULT '0',
Purchaser varchar(64) DEFAULT NULL,
Recipient varchar(64) DEFAULT NULL,
SendVia tinyint(1) NOT NULL DEFAULT '0',
RecipientEmail varchar(64) NOT NULL DEFAULT '',
RecipientFirstname varchar(128) DEFAULT NULL,
RecipientLastname varchar(128) DEFAULT NULL,
RecipientAddress1 varchar(255) DEFAULT NULL,
RecipientAddress2 varchar(255) DEFAULT NULL,
RecipientCity varchar(64) DEFAULT NULL,
RecipientState varchar(32) DEFAULT NULL,
RecipientZipcode varchar(32) DEFAULT NULL,
RecipientCountry char(3) NOT NULL DEFAULT 'USA',
RecipientPhone varchar(32) DEFAULT NULL,
Message text,
Amount decimal(12,2) DEFAULT '0.00',
Debit decimal(12,2) DEFAULT '0.00',
`Status` tinyint(1) NOT NULL DEFAULT '2',
AddDate int(11) DEFAULT '0',
Expiration int(11) DEFAULT NULL,
`Code` varchar(255) DEFAULT NULL,
PRIMARY KEY (GiftCertificateId),
UNIQUE KEY `Code` (`Code`),
KEY OrderId (OrderId),
KEY `Status` (`Status`),
KEY AddDate (AddDate)
);
CREATE TABLE PaymentTypeCurrencies (
PaymentTypeCurrencyId int(11) NOT NULL auto_increment,
PaymentTypeId int(11) NOT NULL default '0',
CurrencyId int(11) NOT NULL default '0',
PRIMARY KEY (PaymentTypeCurrencyId),
KEY PaymentTypeId (PaymentTypeId),
KEY CurrencyId (CurrencyId)
);
CREATE TABLE PaymentTypes (
PaymentTypeId int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(100) NOT NULL DEFAULT '',
Description varchar(255) DEFAULT NULL,
Instructions text,
AdminComments text,
`Status` int(11) NOT NULL DEFAULT '0',
Priority int(11) NOT NULL DEFAULT '0',
IsPrimary tinyint(4) NOT NULL DEFAULT '0',
BuiltIn smallint(6) NOT NULL DEFAULT '0',
GatewayId int(11) NOT NULL DEFAULT '1',
PlacedOrdersEdit tinyint(4) NOT NULL DEFAULT '0',
ProcessingFee double NOT NULL DEFAULT '0',
PortalGroups text,
PRIMARY KEY (PaymentTypeId),
KEY `Status` (`Status`),
KEY Priority (Priority),
KEY GatewayId (GatewayId),
KEY BuiltIn (BuiltIn),
KEY IsPrimary (IsPrimary)
);
CREATE TABLE Products (
ProductId int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) DEFAULT '',
l1_Name varchar(255) DEFAULT NULL,
l2_Name varchar(255) DEFAULT NULL,
l3_Name varchar(255) DEFAULT NULL,
l4_Name varchar(255) DEFAULT NULL,
l5_Name varchar(255) DEFAULT NULL,
AutomaticFilename tinyint(3) unsigned NOT NULL DEFAULT '1',
SKU varchar(255) DEFAULT NULL,
`Type` tinyint(2) unsigned NOT NULL DEFAULT '1',
Description text,
l1_Description text,
l2_Description text,
l3_Description text,
l4_Description text,
l5_Description text,
DescriptionExcerpt text,
l1_DescriptionExcerpt text,
l2_DescriptionExcerpt text,
l3_DescriptionExcerpt text,
l4_DescriptionExcerpt text,
l5_DescriptionExcerpt text,
Weight double(10,4) DEFAULT NULL,
ManufacturerId int(11) NOT NULL DEFAULT '0',
MSRP double DEFAULT NULL,
BackOrder tinyint(3) unsigned NOT NULL DEFAULT '2',
BackOrderDate int(11) DEFAULT NULL,
CreatedOn int(10) unsigned DEFAULT NULL,
Modified int(10) unsigned DEFAULT NULL,
Expire int(10) unsigned DEFAULT NULL,
Hits double NOT NULL DEFAULT '0',
CachedRating varchar(10) NOT NULL DEFAULT '0',
CachedVotesQty int(11) NOT NULL DEFAULT '0',
CachedReviewsQty int(11) NOT NULL DEFAULT '0',
CreatedById int(11) DEFAULT NULL,
ModifiedById int(11) DEFAULT NULL,
Priority int(11) NOT NULL DEFAULT '0',
`Status` tinyint(4) NOT NULL DEFAULT '2',
EditorsPick tinyint(4) NOT NULL DEFAULT '0',
Featured tinyint(4) NOT NULL DEFAULT '0',
OnSale tinyint(1) NOT NULL DEFAULT '0',
ResourceId int(11) DEFAULT NULL,
HotItem tinyint(4) NOT NULL DEFAULT '2',
PopItem tinyint(4) NOT NULL DEFAULT '2',
NewItem tinyint(4) NOT NULL DEFAULT '2',
InventoryStatus tinyint(4) NOT NULL DEFAULT '0',
QtyInStock int(11) NOT NULL DEFAULT '0',
QtyInStockMin int(11) NOT NULL DEFAULT '0',
QtyReserved int(11) NOT NULL DEFAULT '0',
QtyBackOrdered int(11) NOT NULL DEFAULT '0',
QtyOnOrder int(11) NOT NULL DEFAULT '0',
InventoryComment text,
AccessGroupId int(11) DEFAULT NULL,
AccessDuration int(11) DEFAULT NULL,
AccessDurationType tinyint(4) DEFAULT NULL,
AccessStart int(11) DEFAULT NULL,
AccessEnd int(11) DEFAULT NULL,
Virtual tinyint(4) NOT NULL DEFAULT '0',
ProcessingData text,
PackageContent mediumtext,
OptionsSelectionMode tinyint(4) DEFAULT '0',
HasRequiredOptions tinyint(1) NOT NULL DEFAULT '0',
IsRecurringBilling tinyint(3) unsigned NOT NULL DEFAULT '0',
ShippingMode tinyint(1) NOT NULL DEFAULT '0',
ShippingLimitation text,
AssignedCoupon int(11) NOT NULL DEFAULT '0',
MinQtyFreePromoShipping int(11) NOT NULL DEFAULT '0',
MetaKeywords varchar(255) DEFAULT NULL,
MetaDescription text,
PRIMARY KEY (ProductId),
KEY ResourceId (ResourceId),
KEY Hits (Hits),
KEY `Name` (`Name`),
KEY EditorsPick (EditorsPick),
KEY CreatedOn (CreatedOn),
KEY Modified (Modified,CreatedOn),
KEY `Status` (`Status`),
KEY l1_Name (l1_Name),
KEY Priority (Priority),
KEY ManufacturerId (ManufacturerId),
KEY NewItem (NewItem),
KEY PopItem (PopItem),
KEY HotItem (HotItem),
KEY Featured (Featured),
KEY OnSale (OnSale),
KEY Expire (Expire),
KEY Virtual (Virtual),
KEY AccessGroupId (AccessGroupId)
);
CREATE TABLE ProductsCouponItems (
CouponItemId int(11) NOT NULL auto_increment,
CouponId int(11) default NULL,
ItemResourceId int(11) default NULL,
ItemType TINYINT(4) NOT NULL DEFAULT '1',
PRIMARY KEY (CouponItemId),
KEY DiscountId (CouponId),
KEY ItemResourceId (ItemResourceId),
KEY ItemType (ItemType)
);
CREATE TABLE ProductsCoupons (
CouponId int(11) NOT NULL auto_increment,
`Status` tinyint(4) NOT NULL default '1',
Name varchar(255) default NULL,
Code varchar(255) default NULL,
Expiration int(11) default NULL,
GroupId int(11) default NULL,
`Type` tinyint(1) NOT NULL default '1',
Amount double default NULL,
LastUsedBy int(11) default NULL,
LastUsedOn int(11) default NULL,
NumberOfUses int(11) default '1',
PRIMARY KEY (CouponId),
KEY `Status` (`Status`),
KEY Code (Code)
);
CREATE TABLE ProductsDiscountItems (
DiscountItemId int(11) NOT NULL auto_increment,
DiscountId int(11) default NULL,
ItemResourceId int(11) default NULL,
ItemType TINYINT(4) NOT NULL DEFAULT '1',
PRIMARY KEY (DiscountItemId),
KEY DiscountId (DiscountId),
KEY ItemResourceId (ItemResourceId),
KEY ItemType (ItemType)
);
CREATE TABLE ProductsDiscounts (
DiscountId int(11) NOT NULL auto_increment,
`Status` tinyint(4) default '2',
`Name` varchar(255) default NULL,
`Start` int(11) default NULL,
`End` int(11) default NULL,
GroupId int(11) default NULL,
`Type` tinyint(1) default '1',
Amount double default NULL,
PRIMARY KEY (DiscountId),
KEY `Status` (`Status`)
);
CREATE TABLE ProductsPricing (
PriceId int(11) NOT NULL auto_increment,
ProductId int(11) NOT NULL default '0',
MinQty int(11) default NULL,
MaxQty int(11) default NULL,
Cost decimal(10,4) default NULL,
Price decimal(10,4) NOT NULL default '0.0000',
Negotiated tinyint(1) default NULL,
Points int(11) default NULL,
AccessDuration int(11) NOT NULL default '0',
AccessUnit int(11) NOT NULL default '0',
Description varchar(255) default NULL,
IsPrimary tinyint(4) NOT NULL default '0',
GroupId int(11) NOT NULL default '0',
PRIMARY KEY (PriceId),
KEY ProductId (ProductId),
KEY GroupId (GroupId),
KEY IsPrimary (IsPrimary)
);
CREATE TABLE ProductFiles (
FileId int(11) NOT NULL AUTO_INCREMENT,
ProductId int(11) NOT NULL DEFAULT '0',
`Name` varchar(255) NOT NULL DEFAULT '',
Version varchar(100) NOT NULL DEFAULT '',
FilePath varchar(255) NOT NULL DEFAULT '',
RealPath varchar(255) NOT NULL DEFAULT '',
Size int(11) NOT NULL DEFAULT '0',
`Status` tinyint(4) NOT NULL DEFAULT '0',
IsPrimary tinyint(4) NOT NULL DEFAULT '0',
Priority smallint(6) NOT NULL DEFAULT '0',
AddedOn int(11) DEFAULT NULL,
AddedById int(11) DEFAULT NULL,
MIMEType varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (FileId),
KEY ProductId (ProductId),
KEY `Status` (`Status`),
KEY IsPrimary (IsPrimary),
KEY Priority (Priority),
KEY AddedOn (AddedOn)
);
CREATE TABLE UserFileAccess (
FileAccessId int(11) NOT NULL AUTO_INCREMENT,
ProductId int(11) NOT NULL DEFAULT '0',
PortalUserId int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (FileAccessId),
KEY ProductId (ProductId),
KEY PortalUserId (PortalUserId)
);
CREATE TABLE UserDownloads (
DownloadId int(11) NOT NULL AUTO_INCREMENT,
PortalUserId int(11) NOT NULL DEFAULT '0',
Username varchar(255) NOT NULL DEFAULT '',
ProductId int(11) NOT NULL DEFAULT '0',
ProductName varchar(255) NOT NULL DEFAULT '',
FileId int(11) NOT NULL DEFAULT '0',
Filename varchar(255) NOT NULL DEFAULT '',
IPAddress varchar(100) NOT NULL DEFAULT '',
StartedOn int(11) DEFAULT NULL,
EndedOn int(11) DEFAULT NULL,
PRIMARY KEY (DownloadId),
KEY PortalUserId (PortalUserId),
KEY ProductId (ProductId)
);
CREATE TABLE ShippingBrackets (
BracketId int(11) NOT NULL auto_increment,
ShippingTypeID int(11) NOT NULL default '0',
Start double NOT NULL default '0',
End double NOT NULL default '0',
PRIMARY KEY (BracketId),
KEY ShippingTypeID (ShippingTypeID),
KEY Start (Start),
KEY End (End)
);
CREATE TABLE ShippingCosts (
ShippingCostId int(11) NOT NULL auto_increment,
ZoneID int(11) NOT NULL default '0',
BracketId int(11) NOT NULL default '0',
Flat decimal(10,4) default NULL,
PerUnit decimal(10,4) default NULL,
PRIMARY KEY (ShippingCostId),
KEY ZoneID (ZoneID),
KEY BracketId (BracketId)
);
CREATE TABLE ShippingQuoteEngines (
EngineId int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) NOT NULL DEFAULT '',
FlatSurcharge double NOT NULL DEFAULT '0',
PercentSurcharge double NOT NULL DEFAULT '0',
`Status` smallint(6) NOT NULL DEFAULT '0',
Properties text,
ClassName varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (EngineId),
KEY `Status` (`Status`)
);
CREATE TABLE ShippingType (
ShippingID int(11) NOT NULL AUTO_INCREMENT,
`Code` varchar(25) NOT NULL DEFAULT '',
`Name` varchar(100) NOT NULL DEFAULT '',
SpeedCode varchar(25) NOT NULL DEFAULT '',
LocationFrom int(11) NOT NULL DEFAULT '1',
`Type` int(11) NOT NULL DEFAULT '1',
BaseFee double NOT NULL DEFAULT '0',
CODFlatSurcharge double NOT NULL DEFAULT '0',
CODPercentSurcharge double NOT NULL DEFAULT '0',
`Status` tinyint(4) NOT NULL DEFAULT '1',
CostType tinyint(4) NOT NULL DEFAULT '1',
ZeroIfEmpty tinyint(4) NOT NULL DEFAULT '1',
PrecisionBeforeSep tinyint(4) NOT NULL DEFAULT '2',
PrecisionAfterSep tinyint(4) NOT NULL DEFAULT '2',
PortalGroups text,
FreeShippingMinAmount double(10,4) NOT NULL DEFAULT '0.0000',
IsFreePromoShipping tinyint(1) NOT NULL DEFAULT '0',
InsuranceFee decimal(10,2) DEFAULT NULL,
InsuranceType tinyint(1) NOT NULL DEFAULT '2',
PRIMARY KEY (ShippingID),
KEY `Type` (`Type`),
KEY `Status` (`Status`)
);
CREATE TABLE ShippingZones (
ZoneID int(11) NOT NULL auto_increment,
ShippingTypeID int(11) NOT NULL default '0',
Name varchar(100) NOT NULL default '',
Type int(11) NOT NULL default '1',
CODallowed smallint(6) NOT NULL default '1',
PRIMARY KEY (ZoneID),
KEY ShippingTypeID (ShippingTypeID),
KEY `Type` (`Type`)
);
CREATE TABLE ShippingZonesDestinations (
ZoneDestId int(11) NOT NULL auto_increment,
ShippingZoneId int(11) NOT NULL default '0',
StdDestId int(11) default '0',
DestValue varchar(255) default NULL,
PRIMARY KEY (ZoneDestId),
KEY ShippingZoneId (ShippingZoneId),
KEY StdDestId (StdDestId)
);
CREATE TABLE TaxZones (
TaxZoneId int(11) NOT NULL auto_increment,
Name varchar(100) NOT NULL default '',
Type int(11) NOT NULL default '1',
TaxValue double NOT NULL default '0',
ApplyToShipping TINYINT( 1 ) NOT NULL DEFAULT '0',
ApplyToProcessing TINYINT( 1 ) NOT NULL DEFAULT '0',
PRIMARY KEY (TaxZoneId)
);
CREATE TABLE TaxZonesDestinations (
TaxZoneDestId int(11) NOT NULL auto_increment,
TaxZoneId int(11) NOT NULL default '0',
StdDestId int(11) default '0',
DestValue varchar(255) default NULL,
PRIMARY KEY (TaxZoneDestId),
KEY TaxZoneId (TaxZoneId),
KEY StdDestId (StdDestId)
);
CREATE TABLE AffiliatePayments (
AffiliatePaymentId int(11) NOT NULL AUTO_INCREMENT,
AffiliateId int(10) unsigned NOT NULL DEFAULT '0',
PaymentDate int(10) unsigned DEFAULT NULL,
Amount decimal(10,2) NOT NULL DEFAULT '0.00',
`Comment` text,
PaymentReference varchar(255) NOT NULL DEFAULT '',
PaymentTypeId int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (AffiliatePaymentId),
KEY AffiliateId (AffiliateId),
KEY PaymentDate (PaymentDate),
KEY PaymentTypeId (PaymentTypeId)
);
CREATE TABLE AffiliatePaymentTypes (
PaymentTypeId int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) NOT NULL DEFAULT '',
Description text,
IsPrimary tinyint(4) NOT NULL DEFAULT '0',
`Status` tinyint(4) NOT NULL DEFAULT '0',
Priority tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (PaymentTypeId),
KEY IsPrimary (IsPrimary),
KEY `Status` (`Status`),
KEY Priority (Priority)
);
CREATE TABLE AffiliatePlans (
AffiliatePlanId int(11) NOT NULL auto_increment,
Name varchar(255) NOT NULL default '',
PlanType tinyint(3) unsigned NOT NULL default '1',
ResetInterval int(10) unsigned NOT NULL default '0',
PaymentType tinyint(4) NOT NULL default '0',
MinPaymentAmount varchar(255) NOT NULL default '',
Enabled tinyint(4) unsigned NOT NULL default '0',
IsPrimary tinyint(4) NOT NULL default '0',
PRIMARY KEY (AffiliatePlanId),
KEY PaymentType (PaymentType),
KEY Enabled (Enabled),
KEY IsPrimary (IsPrimary)
);
CREATE TABLE AffiliatePlansBrackets (
AffiliateBracketId int(11) NOT NULL auto_increment,
AffiliatePlanId int(11) NOT NULL default '0',
FromAmount decimal(10,4) NOT NULL default '0.0000',
ToAmount decimal(10,4) NOT NULL default '0.0000',
Percent decimal(10,2) NOT NULL default '0.00',
PRIMARY KEY (AffiliateBracketId),
KEY AffiliatePlanId (AffiliatePlanId)
);
CREATE TABLE AffiliatePlansItems (
AffiliateItemId int(11) NOT NULL auto_increment,
AffiliatePlanId int(11) NOT NULL default '0',
ItemResourceId int(10) unsigned NOT NULL default '0',
ItemType tinyint(4) NOT NULL default '1',
PRIMARY KEY (AffiliateItemId),
KEY AffiliatePlanId (AffiliatePlanId),
KEY ItemResourceId (ItemResourceId),
KEY ItemType (ItemType)
);
CREATE TABLE Affiliates (
AffiliateId int(11) NOT NULL AUTO_INCREMENT,
PortalUserId int(10) unsigned NOT NULL DEFAULT '0',
AffiliatePlanId int(10) unsigned NOT NULL DEFAULT '0',
AccumulatedAmount decimal(10,2) NOT NULL DEFAULT '0.00',
AmountToPay decimal(10,2) NOT NULL DEFAULT '0.00',
LastPaymentDate int(11) unsigned DEFAULT NULL,
LastOrderDate int(11) unsigned DEFAULT NULL,
`Status` tinyint(4) NOT NULL DEFAULT '2',
AffiliateCode varchar(30) NOT NULL DEFAULT '',
ItemsSold int(10) unsigned NOT NULL DEFAULT '0',
PaymentTypeId int(11) NOT NULL DEFAULT '0',
SSN varchar(100) NOT NULL DEFAULT '',
Comments text,
CreatedOn int(11) DEFAULT NULL,
PRIMARY KEY (AffiliateId),
UNIQUE KEY PortalUserId (PortalUserId),
UNIQUE KEY AffiliateCode (AffiliateCode),
KEY LastOrderDate (LastOrderDate),
KEY AffiliatePlanId (AffiliatePlanId),
KEY `Status` (`Status`),
KEY PaymentTypeId (PaymentTypeId),
KEY CreatedOn (CreatedOn)
);
CREATE TABLE ProductOptionCombinations (
CombinationId int(11) NOT NULL AUTO_INCREMENT,
ProductId int(11) NOT NULL DEFAULT '0',
Combination text,
CombinationCRC int(11) NOT NULL DEFAULT '0',
PriceType tinyint(1) DEFAULT '3',
Price float DEFAULT NULL,
WeightType tinyint(1) DEFAULT '3',
Weight float DEFAULT NULL,
Availability tinyint(1) NOT NULL DEFAULT '1',
Priority int(11) NOT NULL DEFAULT '0',
QtyInStock int(11) NOT NULL DEFAULT '0',
QtyReserved int(11) NOT NULL DEFAULT '0',
QtyBackOrdered int(11) NOT NULL DEFAULT '0',
QtyOnOrder int(11) NOT NULL DEFAULT '0',
SKU varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (CombinationId),
KEY CombinationCRC (CombinationCRC),
KEY ProductId (ProductId),
KEY Availability (Availability)
);
CREATE TABLE ProductOptions (
ProductOptionId int(11) NOT NULL auto_increment,
ProductId int(11) NOT NULL default '0',
Name varchar(255) NOT NULL default '',
OptionType TINYINT(4) NOT NULL DEFAULT '0',
Required tinyint(4) NOT NULL default '0',
Listable tinyint(4) NOT NULL default '0',
Priority int(11) NOT NULL default '0',
`Values` text,
Prices text,
PriceTypes text,
PRIMARY KEY (ProductOptionId),
KEY ProductId (ProductId,Priority),
KEY OptionType (OptionType),
KEY Listable (Listable)
);
CREATE TABLE ProductsCustomData (
CustomDataId int(11) NOT NULL auto_increment,
ResourceId int(10) unsigned NOT NULL default '0',
KEY ResourceId (ResourceId),
PRIMARY KEY (CustomDataId)
);
ALTER TABLE SiteDomains
ADD COLUMN BillingCountry varchar(3) NOT NULL DEFAULT '',
ADD COLUMN ShippingCountry varchar(3) NOT NULL DEFAULT '',
ADD COLUMN PrimaryCurrencyId int(11) NOT NULL DEFAULT '0',
ADD COLUMN Currencies varchar(255) NOT NULL DEFAULT '',
ADD COLUMN PrimaryPaymentTypeId int(11) NOT NULL DEFAULT '0',
ADD COLUMN PaymentTypes varchar(255) NOT NULL DEFAULT '',
ADD INDEX (BillingCountry),
ADD INDEX (ShippingCountry),
ADD INDEX (PrimaryCurrencyId),
ADD INDEX (Currencies),
ADD INDEX (PrimaryPaymentTypeId),
ADD INDEX (PaymentTypes);
\ No newline at end of file
Index: branches/5.2.x/install/upgrades.sql
===================================================================
--- branches/5.2.x/install/upgrades.sql (revision 14883)
+++ branches/5.2.x/install/upgrades.sql (revision 14884)
@@ -1,232 +1,236 @@
# ===== v 4.3.9 =====
INSERT INTO ImportScripts VALUES (DEFAULT, 'Products from CSV file [In-Commerce]', '', 'p', 'In-Commerce', '', 'CSV', '1');
ALTER TABLE Products ADD OnSale TINYINT(1) NOT NULL default '0' AFTER Featured, ADD INDEX (OnSale);
UPDATE Phrase SET Module = 'In-Commerce' WHERE Phrase IN ('lu_comm_Images', 'lu_comm_ImagesHeader');
# ===== v 5.0.0 =====
UPDATE Category SET Template = '/in-commerce/designs/section' WHERE Template = 'in-commerce/store/category';
UPDATE Category SET CachedTemplate = '/in-commerce/designs/section' WHERE CachedTemplate = 'in-commerce/store/category';
UPDATE ConfigurationValues SET VariableValue = '/in-commerce/designs/section' WHERE VariableName = 'p_CategoryTemplate';
UPDATE ConfigurationValues SET VariableValue = 'in-commerce/designs/detail' WHERE VariableName = 'p_ItemTemplate';
DELETE FROM PersistantSessionData WHERE VariableName IN ('affil_columns_.', 'ap_columns_.', 'apayments_columns_.', 'apayments.log_columns_.', 'd_columns_.', 'coup_columns_.', 'file_columns_.', 'po_columns_.', 'z_columns_.', 'tax_columns_.');
DELETE FROM PersistantSessionData WHERE VariableName LIKE '%ord.%';
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:products.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:setting_folder.view', 11, 1, 1, 0);
INSERT INTO ShippingQuoteEngines VALUES (DEFAULT, 'USPS.com', 0, 0, 0, 'a:21:{s:12:"AccountLogin";s:0:"";s:15:"AccountPassword";N;s:10:"UPSEnabled";N;s:10:"UPSAccount";s:0:"";s:11:"UPSInvoiced";N;s:10:"FDXEnabled";N;s:10:"FDXAccount";s:0:"";s:10:"DHLEnabled";N;s:10:"DHLAccount";s:0:"";s:11:"DHLInvoiced";N;s:10:"USPEnabled";N;s:10:"USPAccount";s:0:"";s:11:"USPInvoiced";N;s:10:"ARBEnabled";N;s:10:"ARBAccount";s:0:"";s:11:"ARBInvoiced";N;s:10:"1DYEnabled";N;s:10:"2DYEnabled";N;s:10:"3DYEnabled";N;s:10:"GNDEnabled";N;s:10:"ShipMethod";N;}', 'USPS');
INSERT INTO ConfigurationAdmin VALUES ('Comm_CompanyName', 'la_Text_ContactsGeneral', 'la_text_CompanyName', 'text', NULL, NULL, 10.01, 0, 0);
INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Comm_CompanyName', '', 'In-Commerce', 'in-commerce:contacts');
UPDATE ConfigurationAdmin SET prompt = 'la_text_StoreName', DisplayOrder = 10.02 WHERE VariableName = 'Comm_StoreName';
INSERT INTO ConfigurationAdmin VALUES ('Comm_Contacts_Name', 'la_Text_ContactsGeneral', 'la_text_ContactName', 'text', NULL, NULL, 10.03, 0, 0);
INSERT INTO ConfigurationValues VALUES (DEFAULT, 'Comm_Contacts_Name', '', 'In-Commerce', 'in-commerce:contacts');
UPDATE ConfigurationAdmin SET DisplayOrder = 10.04 WHERE VariableName = 'Comm_Contacts_Phone';
UPDATE ConfigurationAdmin SET DisplayOrder = 10.05 WHERE VariableName = 'Comm_Contacts_Fax';
UPDATE ConfigurationAdmin SET DisplayOrder = 10.06 WHERE VariableName = 'Comm_Contacts_Email';
UPDATE ConfigurationAdmin SET DisplayOrder = 10.07 WHERE VariableName = 'Comm_Contacts_Additional';
DELETE FROM Phrase WHERE Phrase IN ('la_fld_ManufacturerId', 'la_fld_DiscountId', 'la_fld_CouponId', 'la_fld_AffiliatePlanId', 'la_fld_AffiliateId', 'la_fld_ZoneId', 'la_fld_EngineId', 'la_fld_ShippingId', 'la_fld_ProductId', 'la_fld_OptionId', 'la_fld_CurrencyId', 'la_fld_Zone_Name');
UPDATE Phrase SET Module = 'In-Commerce' WHERE ((Phrase LIKE '%Product%' OR Phrase LIKE '%Shipping%' OR Phrase LIKE '%Coupon%' OR Phrase LIKE '%Discount%' OR Phrase LIKE '%Report%' OR Phrase LIKE '%Currency%' OR Phrase LIKE '%Cart%') AND (Module = 'Core'));
# ===== v 5.0.1 =====
UPDATE ConfigurationValues SET VariableValue = 'in-commerce/products/product_detail' WHERE VariableName = 'p_ItemTemplate';
UPDATE ConfigurationAdmin SET ValueList = '1=la_opt_Session,2=la_opt_PermanentCookie' WHERE VariableName = 'Comm_AffiliateStorageMethod';
UPDATE ConfigurationAdmin SET ValueList = 'ASC=la_common_Ascending,DESC=la_common_Descending'
WHERE VariableName IN ('product_OrderProductsByDir', 'product_OrderProductsThenByDir');
UPDATE ConfigurationAdmin SET ValueList = '1=la_opt_PriceCalculationByPrimary,2=la_opt_PriceCalculationByOptimal'
WHERE VariableName = 'Comm_PriceBracketCalculation';
UPDATE ConfigurationAdmin
SET ValueList = '1=la_opt_Sec,60=la_opt_Min,3600=la_opt_Hour,86400=la_opt_Day,604800=la_opt_Week,2419200=la_opt_Month,29030400=la_opt_Year'
WHERE VariableName IN ('product_ReviewDelay_Interval', 'product_RatingDelay_Interval');
UPDATE CustomField SET FieldLabel = 'la_fld_cust_p_ItemTemplate', Prompt = 'la_fld_cust_p_ItemTemplate' WHERE FieldName = 'p_ItemTemplate';
UPDATE Events SET Type = 1 WHERE Event = 'BACKORDER.FULLFILL';
UPDATE ConfigurationAdmin SET ValueList = 'style="width: 50px;"' WHERE VariableName IN ('product_RatingDelay_Value', 'product_ReviewDelay_Value');
# ===== v 5.0.2-B1 =====
ALTER TABLE AffiliatePayments
CHANGE Comment Comment text NULL,
CHANGE PaymentDate PaymentDate INT(10) UNSIGNED NULL DEFAULT NULL;
ALTER TABLE AffiliatePaymentTypes CHANGE Description Description text NULL;
ALTER TABLE Affiliates
CHANGE Comments Comments text NULL,
CHANGE CreatedOn CreatedOn INT(11) NULL DEFAULT NULL;
ALTER TABLE Manufacturers CHANGE Description Description text NULL;
ALTER TABLE Orders
CHANGE UserComment UserComment text NULL,
CHANGE AdminComment AdminComment text NULL,
CHANGE GWResult1 GWResult1 MEDIUMTEXT NULL,
CHANGE GWResult2 GWResult2 MEDIUMTEXT NULL,
CHANGE OrderDate OrderDate INT(10) UNSIGNED NULL DEFAULT NULL,
CHANGE PaymentExpires PaymentExpires INT(10) UNSIGNED NULL DEFAULT NULL;
ALTER TABLE PaymentTypes CHANGE PortalGroups PortalGroups text NULL;
ALTER TABLE ProductOptionCombinations CHANGE Combination Combination text NULL;
ALTER TABLE Products
CHANGE ShippingLimitation ShippingLimitation text NULL,
CHANGE PackageContent PackageContent MEDIUMTEXT NULL;
ALTER TABLE ShippingQuoteEngines CHANGE Properties Properties text NULL;
ALTER TABLE ShippingType CHANGE PortalGroups PortalGroups text NULL;
ALTER TABLE ProductFiles
CHANGE ProductId ProductId INT(11) NOT NULL DEFAULT '0',
CHANGE `Name` `Name` VARCHAR(255) NOT NULL DEFAULT '',
CHANGE Version Version VARCHAR(100) NOT NULL DEFAULT '',
CHANGE FilePath FilePath VARCHAR(255) NOT NULL DEFAULT '',
CHANGE RealPath RealPath VARCHAR(255) NOT NULL DEFAULT '',
CHANGE Size Size INT(11) NOT NULL DEFAULT '0',
CHANGE AddedOn AddedOn INT(11) NULL DEFAULT NULL;
ALTER TABLE UserFileAccess
CHANGE ProductId ProductId INT( 11 ) NOT NULL DEFAULT '0',
CHANGE PortalUserId PortalUserId INT( 11 ) NOT NULL DEFAULT '0';
ALTER TABLE GatewayConfigFields CHANGE ValueList ValueList MEDIUMTEXT NULL;
ALTER TABLE Currencies
CHANGE `Status` `Status` SMALLINT(6) NOT NULL DEFAULT '1',
CHANGE Modified Modified INT(11) NULL DEFAULT NULL;
ALTER TABLE GiftCertificates CHANGE `Status` `Status` TINYINT(1) NOT NULL DEFAULT '2';
ALTER TABLE UserDownloads
CHANGE StartedOn StartedOn INT(11) NULL DEFAULT NULL,
CHANGE EndedOn EndedOn INT(11) NULL DEFAULT NULL;
# ===== v 5.0.2-B2 =====
# ===== v 5.0.2-RC1 =====
# ===== v 5.0.2 =====
# ===== v 5.0.3-B1 =====
UPDATE Phrase
SET PhraseType = 1
WHERE Phrase IN (
'la_ship_All_Together', 'la_ship_Backorders_Upon_Avail', 'la_ship_Backorder_Separately',
'lu_ship_Shipment', 'lu_ship_ShippingType'
);
# ===== v 5.0.3-B2 =====
# ===== v 5.0.3-RC1 =====
# ===== v 5.0.3 =====
# ===== v 5.0.4-B1 =====
# ===== v 5.0.4-B2 =====
# ===== v 5.0.4 =====
# ===== v 5.1.0-B1 =====
UPDATE Modules SET Path = 'modules/in-commerce/' WHERE `Name` = 'In-Commerce';
UPDATE ConfigurationValues
SET ValueList = '0=lu_none||<SQL+>SELECT l%3$s_Name AS OptionName, IsoCode AS OptionValue FROM <PREFIX>CountryStates WHERE Type = 1 ORDER BY OptionName</SQL>'
WHERE ValueList = '0=lu_none||<SQL>SELECT DestName AS OptionName, DestAbbr AS OptionValue FROM <PREFIX>StdDestinations WHERE DestParentId IS NULL Order BY OptionName</SQL>';
ALTER TABLE SiteDomains
ADD COLUMN BillingCountry varchar(3) NOT NULL DEFAULT '',
ADD COLUMN ShippingCountry varchar(3) NOT NULL DEFAULT '',
ADD COLUMN PrimaryCurrencyId int(11) NOT NULL DEFAULT '0',
ADD COLUMN Currencies varchar(255) NOT NULL DEFAULT '',
ADD COLUMN PrimaryPaymentTypeId int(11) NOT NULL DEFAULT '0',
ADD COLUMN PaymentTypes varchar(255) NOT NULL DEFAULT '',
ADD INDEX (BillingCountry),
ADD INDEX (ShippingCountry),
ADD INDEX (PrimaryCurrencyId),
ADD INDEX (Currencies),
ADD INDEX (PrimaryPaymentTypeId),
ADD INDEX (PaymentTypes);
UPDATE Phrase SET Module = 'Core' WHERE Phrase IN ('la_btn_Add', 'la_fld_RecipientName', 'la_fld_SenderName');
DELETE FROM Permissions WHERE Permission LIKE 'in-commerce:incommerce_configemail%';
# ===== v 5.1.0-B2 =====
# ===== v 5.1.0-RC1 =====
UPDATE Phrase
SET PhraseType = 1
WHERE Phrase IN (
'la_col_Qty', 'la_col_QtyBackordered', 'la_ItemBackordered', 'la_ship_all_together',
'la_ship_backorders_upon_avail', 'la_ship_backorder_separately', 'la_tooltip_New_Coupon',
'la_tooltip_New_Discount'
);
DELETE FROM Phrase WHERE Phrase = 'la_comm_ProductsByManuf';
# ===== v 5.1.0 =====
ALTER TABLE Products CHANGE CachedRating CachedRating varchar(10) NOT NULL default '0';
# ===== v 5.1.1-B1 =====
ALTER TABLE Orders CHANGE ShippingOption ShippingOption TINYINT(4) NOT NULL DEFAULT '0';
ALTER TABLE ProductFiles CHANGE AddedById AddedById INT(11) NULL DEFAULT NULL;
UPDATE ProductFiles SET AddedById = NULL WHERE AddedById = 0;
ALTER TABLE Products
CHANGE CreatedById CreatedById INT(11) NULL DEFAULT NULL ,
CHANGE ModifiedById ModifiedById INT(11) NULL DEFAULT NULL;
UPDATE Products SET CreatedById = NULL WHERE CreatedById = 0;
UPDATE Products SET ModifiedById = NULL WHERE ModifiedById = 0;
# ===== v 5.1.1-B2 =====
# ===== v 5.1.1-RC1 =====
# ===== v 5.1.1 =====
# ===== v 5.1.2-B1 =====
DELETE FROM Phrase WHERE PhraseKey = 'LA_TITLE_ADDING_ORDER_ITEM';
# ===== v 5.1.2-B2 =====
UPDATE Phrase SET l<%PRIMARY_LANGUAGE%>_Translation = REPLACE(l<%PRIMARY_LANGUAGE%>_Translation, 'Discounts & Coupons', 'Discounts & Certificates') WHERE PhraseKey = 'LA_TAB_DISCOUNTSANDCOUPONS';
# ===== v 5.1.2-RC1 =====
UPDATE Phrase SET Module = 'Core' WHERE PhraseKey = 'LA_FLD_ISOCODE' OR PhraseKey = 'LA_COL_ISOCODE';
# ===== v 5.1.2 =====
# ===== v 5.1.3-B1 =====
ALTER TABLE AffiliatePlansBrackets CHANGE Percent Percent DECIMAL (10,2) NOT NULL DEFAULT '0.00';
# ===== v 5.1.3-B2 =====
# ===== v 5.1.3-RC1 =====
UPDATE ConfigurationValues
SET VariableValue = 'in-commerce/products/product_detail'
WHERE VariableName = 'p_ItemTemplate' AND VariableValue = 'in-commerce/designs/detail';
# ===== v 5.1.3-RC2 =====
# ===== v 5.1.3 =====
# ===== v 5.2.0-B1 =====
UPDATE SearchConfig
SET DisplayName = REPLACE(DisplayName, 'lu_', 'lc_')
WHERE DisplayName IN (
'lu_field_descriptionex', 'lu_field_manufacturer', 'lu_field_qtysold', 'lu_field_topseller'
-);
\ No newline at end of file
+);
+
+INSERT INTO ConfigurationValues VALUES(DEFAULT, 'OrderVATIncluded', '0', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_config_OrderVATIncluded', 'checkbox', NULL, NULL, 10.12, '0', '0', NULL);
+
+ALTER TABLE Orders ADD VATIncluded TINYINT(1) UNSIGNED NOT NULL DEFAULT '0';
\ No newline at end of file
Index: branches/5.2.x/install/english.lang
===================================================================
--- branches/5.2.x/install/english.lang (revision 14883)
+++ branches/5.2.x/install/english.lang (revision 14884)
@@ -1,956 +1,958 @@
<LANGUAGES Version="4">
<LANGUAGE Encoding="base64" PackName="English" LocalName="English" DateFormat="m/d/Y" TimeFormat="g:i A" InputDateFormat="m/d/Y" InputTimeFormat="g:i:s A" DecimalPoint="." ThousandSep="," Charset="utf-8" UnitSystem="2" Locale="en-US" UserDocsUrl="http://docs.in-portal.org/eng/index.php">
<PHRASES>
<PHRASE Label="la_AccountLogin" Module="In-Commerce" Type="1">QWNjb3VudA==</PHRASE>
<PHRASE Label="la_AddressLine1" Module="In-Commerce" Type="1">QWRkcmVzcyBMaW5lIDE=</PHRASE>
<PHRASE Label="la_AddressLine2" Module="In-Commerce" Type="1">QWRkcmVzcyBMaW5lIDI=</PHRASE>
<PHRASE Label="la_ADP" Module="In-Commerce" Type="1">QW5kb3JyYW4gUGVzZXRh</PHRASE>
<PHRASE Label="la_AED" Module="In-Commerce" Type="1">VUFFIERpcmhhbQ==</PHRASE>
<PHRASE Label="la_AFA" Module="In-Commerce" Type="1">QWZnaGFuaQ==</PHRASE>
<PHRASE Label="la_affiliate_already_exists" Module="In-Commerce" Type="1">YWZmaWxpYXRlIGFscmVhZHkgZXhpc3Rz</PHRASE>
<PHRASE Label="la_AFN" Module="In-Commerce" Type="1">QWZnaGFuaQ==</PHRASE>
<PHRASE Label="la_ALL" Module="In-Commerce" Type="1">TGVjaw==</PHRASE>
<PHRASE Label="la_Allowed" Module="In-Commerce" Type="1">QWxsb3dlZA==</PHRASE>
<PHRASE Label="la_AllowOrderDifferentTypes" Module="In-Commerce" Type="1">QWxsb3cgb3JkZXJpbmcgb2YgcHJvZHVjdHMgd2l0aCBkaWZmZXJlbnQgdHlwZXM=</PHRASE>
<PHRASE Label="la_AllowOrderingInNonPrimaryCurrency" Module="In-Commerce" Type="1">QWxsb3cgb3JkZXJpbmcgaW4gbm9uLXByaW1hcnkgY3VycmVuY2llcw==</PHRASE>
<PHRASE Label="la_AllowOrderMoreThanAvailable" Module="In-Commerce" Type="1">QWxsb3cgb3JkZXJpbmcgb2YgbW9yZSBxdWFudGl0eSB0aGFuIGF2YWlsYWJsZSBhcyBiYWNrb3JkZXI=</PHRASE>
<PHRASE Label="la_AMD" Module="In-Commerce" Type="1">QXJtZW5pYW4gRHJhbQ==</PHRASE>
<PHRASE Label="la_ANG" Module="In-Commerce" Type="1">TmV0aGVybGFuZHMgQW50aWxsYW4gR3VpbGRlcg==</PHRASE>
<PHRASE Label="la_AOA" Module="In-Commerce" Type="1">S3dhbnph</PHRASE>
<PHRASE Label="la_Archived" Module="In-Commerce" Type="1">QXJjaGl2ZWQ=</PHRASE>
<PHRASE Label="la_ARS" Module="In-Commerce" Type="1">QXJnZW50aW5lIFBlc28=</PHRASE>
<PHRASE Label="la_AUD" Module="In-Commerce" Type="1">QXVzdHJhbGlhbiBEb2xsYXI=</PHRASE>
<PHRASE Label="la_AutoBackorder" Module="In-Commerce" Type="1">QXV0byBCYWNrb3JkZXI=</PHRASE>
<PHRASE Label="la_AutoProcessRecurringOrders" Module="In-Commerce" Type="1">QXV0b21hdGljYWxseSBQcm9jZXNzIFJlY3VycmluZyBPcmRlcnM=</PHRASE>
<PHRASE Label="la_Availability" Module="In-Commerce" Type="1">QXZhaWxhYmlsaXR5</PHRASE>
<PHRASE Label="la_AWG" Module="In-Commerce" Type="1">QXJ1YmFuIEd1aWxkZXI=</PHRASE>
<PHRASE Label="la_AZM" Module="In-Commerce" Type="1">QXplcmJhaWphbmlhbiBNYW5hdA==</PHRASE>
<PHRASE Label="la_BackOrders" Module="In-Commerce" Type="1">QmFja09yZGVycw==</PHRASE>
<PHRASE Label="la_BAM" Module="In-Commerce" Type="1">Q29udmVydGlibGUgTWFya3M=</PHRASE>
<PHRASE Label="la_BankOfLatvia" Module="In-Commerce" Type="1">QmFuayBvZiBMYXR2aWEgLSB3d3cuYmFuay5sdg==</PHRASE>
<PHRASE Label="la_Base_Fee" Module="In-Commerce" Type="1">QmFzZSBGZWU=</PHRASE>
<PHRASE Label="la_BBD" Module="In-Commerce" Type="1">QmFyYmFkb3MgRG9sbGFy</PHRASE>
<PHRASE Label="la_BDT" Module="In-Commerce" Type="1">VGFrYQ==</PHRASE>
<PHRASE Label="la_BGL" Module="In-Commerce" Type="1">TGV2</PHRASE>
<PHRASE Label="la_BGN" Module="In-Commerce" Type="1">QnVsZ2FyaWFuIExldg==</PHRASE>
<PHRASE Label="la_BHD" Module="In-Commerce" Type="1">QmFocmFpbmkgRGluYXI=</PHRASE>
<PHRASE Label="la_BIF" Module="In-Commerce" Type="1">QnVydW5kaSBGcmFuYw==</PHRASE>
<PHRASE Label="la_BMD" Module="In-Commerce" Type="1">QmVybXVkaWFuIERvbGxhcg==</PHRASE>
<PHRASE Label="la_BND" Module="In-Commerce" Type="1">QnJ1bmVpIERvbGxhcg==</PHRASE>
<PHRASE Label="la_BOB" Module="In-Commerce" Type="1">Qm9saXZpYW5v</PHRASE>
<PHRASE Label="la_BOV" Module="In-Commerce" Type="1">TXZkb2w=</PHRASE>
<PHRASE Label="la_BRL" Module="In-Commerce" Type="1">QnJhemlsaWFuIFJlYWw=</PHRASE>
<PHRASE Label="la_BSD" Module="In-Commerce" Type="1">QmFoYW1pYW4gRG9sbGFy</PHRASE>
<PHRASE Label="la_BTN" Module="In-Commerce" Type="1">Tmd1bHRydW0=</PHRASE>
<PHRASE Label="la_btn_AddLocation" Module="In-Commerce" Type="1">QWRkIExvY2F0aW9u</PHRASE>
<PHRASE Label="la_btn_CancelOrder" Module="In-Commerce" Type="1">Q2FuY2VsIE9yZGVy</PHRASE>
<PHRASE Label="la_btn_Order" Module="In-Commerce" Type="1">T3JkZXI=</PHRASE>
<PHRASE Label="la_btn_ReceiveOrder" Module="In-Commerce" Type="1">UmVjZWl2ZSBPcmRlcg==</PHRASE>
<PHRASE Label="la_btn_Remove" Module="In-Commerce" Type="1">UmVtb3Zl</PHRASE>
<PHRASE Label="la_btn_RemoveLocations" Module="In-Commerce" Type="1">UmVtb3ZlIExvY2F0aW9ucw==</PHRASE>
<PHRASE Label="la_BuiltIn" Module="In-Commerce" Type="1">QnVpbHQtSW4=</PHRASE>
<PHRASE Label="la_button_add" Module="In-Commerce" Type="1">QWRk</PHRASE>
<PHRASE Label="la_button_receive_order" Module="In-Commerce" Type="1">UmVjZWl2ZSBvcmRlcg==</PHRASE>
<PHRASE Label="la_button_remove" Module="In-Commerce" Type="1">UmVtb3Zl</PHRASE>
<PHRASE Label="la_Button_Save" Module="In-Commerce" Type="1">U2F2ZQ==</PHRASE>
<PHRASE Label="la_BWP" Module="In-Commerce" Type="1">UHVsYQ==</PHRASE>
<PHRASE Label="la_ByAmount" Module="In-Commerce" Type="1">YnkgYW1vdW50</PHRASE>
<PHRASE Label="la_ByCategory" Module="In-Commerce" Type="1">QnkgU2VjdGlvbg==</PHRASE>
<PHRASE Label="la_ByCountry" Module="In-Commerce" Type="1">QnkgQ291bnRyeQ==</PHRASE>
<PHRASE Label="la_ByItem" Module="In-Commerce" Type="1">YnkgaXRlbQ==</PHRASE>
<PHRASE Label="la_byProduct" Module="In-Commerce" Type="1">QnkgUHJvZHVjdA==</PHRASE>
<PHRASE Label="la_BYR" Module="In-Commerce" Type="1">QmVsYXJ1c3NpYW4gUnVibGU=</PHRASE>
<PHRASE Label="la_ByState" Module="In-Commerce" Type="1">QnkgU3RhdGU=</PHRASE>
<PHRASE Label="la_ByUser" Module="In-Commerce" Type="1">QnkgVXNlcg==</PHRASE>
<PHRASE Label="la_ByWeight" Module="In-Commerce" Type="1">Ynkgd2VpZ2h0</PHRASE>
<PHRASE Label="la_ByZIP" Module="In-Commerce" Type="1">QnkgWklQ</PHRASE>
<PHRASE Label="la_by_amount" Module="In-Commerce" Type="1">YnkgYW1vdW50</PHRASE>
<PHRASE Label="la_by_items_sold" Module="In-Commerce" Type="1">YnkgaXRlbXMgc29sZA==</PHRASE>
<PHRASE Label="la_by_options" Module="In-Commerce" Type="1">QnkgUHJvZHVjdCBPcHRpb25z</PHRASE>
<PHRASE Label="la_by_product" Module="In-Commerce" Type="1">QnkgUHJvZHVjdA==</PHRASE>
<PHRASE Label="la_by_request" Module="In-Commerce" Type="1">QnkgUmVxdWVzdA==</PHRASE>
<PHRASE Label="la_BZD" Module="In-Commerce" Type="1">QmVsaXplIERvbGxhcg==</PHRASE>
<PHRASE Label="la_CAD" Module="In-Commerce" Type="1">Q2FuYWRpYW4gRG9sbGFy</PHRASE>
<PHRASE Label="la_CDF" Module="In-Commerce" Type="1">RnJhbmMgQ29uZ29sYWlz</PHRASE>
<PHRASE Label="la_CHF" Module="In-Commerce" Type="1">U3dpc3MgRnJhbmM=</PHRASE>
<PHRASE Label="la_City" Module="In-Commerce" Type="1">Q2l0eQ==</PHRASE>
<PHRASE Label="la_ClearCostsWarning" Module="In-Commerce" Type="1">RG8geW91IHJlYWxseSB3YW50IHRvIHJlc2V0IHdob2xlIGNvc3RzIHRhYmxlPw==</PHRASE>
<PHRASE Label="la_CLF" Module="In-Commerce" Type="1">VW5pZGFkZXMgZGUgZm9tZW50bw==</PHRASE>
<PHRASE Label="la_CloneCoupon" Module="In-Commerce" Type="1">Q2xvbmluZyBhIENvdXBvbg==</PHRASE>
<PHRASE Label="la_CLP" Module="In-Commerce" Type="1">Q2hpbGVhbiBQZXNv</PHRASE>
<PHRASE Label="la_CNY" Module="In-Commerce" Type="1">Q2hpbmEgWXVhbiBSZW5taW5iaQ==</PHRASE>
<PHRASE Label="la_COD" Module="In-Commerce" Type="1">Q09E</PHRASE>
<PHRASE Label="la_COD_Flat_Surcharge" Module="In-Commerce" Type="1">Q09EIEZsYXQgU3VyY2hhcmdl</PHRASE>
<PHRASE Label="la_COD_Percent_Surcharge" Module="In-Commerce" Type="1">Q09EIFBlcmNlbnQgU3VyY2hhcmdl</PHRASE>
<PHRASE Label="la_col_BuiltIn" Module="In-Commerce" Type="1">QnVpbHQtSW4=</PHRASE>
<PHRASE Label="la_col_CODFlatSurecharge" Module="In-Commerce" Type="1">Q09EIGZsYXQgc3VyZWNoYXJnZQ==</PHRASE>
<PHRASE Label="la_col_Combination" Module="In-Commerce" Type="1">Q29tYmluYXRpb24=</PHRASE>
<PHRASE Label="la_col_Commission" Module="In-Commerce" Type="1">QWZmaWxsaWF0ZSBDb21taXNzaW9u</PHRASE>
<PHRASE Label="la_col_CouponItemType" Module="In-Commerce" Type="1">Q291cG9uIEl0ZW0gVHlwZQ==</PHRASE>
<PHRASE Label="la_col_CustomerName" Module="In-Commerce" Type="1">Q3VzdG9tZXIgTmFtZQ==</PHRASE>
<PHRASE Label="la_col_DownloadedFileName" Module="In-Commerce" Type="1">RmlsZW5hbWU=</PHRASE>
<PHRASE Label="la_col_DownloadedProductName" Module="In-Commerce" Type="1">UHJvZHVjdCBOYW1l</PHRASE>
<PHRASE Label="la_col_EndedOn" Module="In-Commerce" Type="1">RW5kZWQgT24=</PHRASE>
<PHRASE Label="la_col_ExtendedPrice" Module="In-Commerce" Type="1">RXh0LiBQcmljZQ==</PHRASE>
<PHRASE Label="la_col_FromUser" Module="In-Commerce" Type="1">RnJvbSBVc2Vy</PHRASE>
<PHRASE Label="la_col_GMV" Module="In-Commerce" Type="1">R01W</PHRASE>
<PHRASE Label="la_col_ItemName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_ItemType" Module="In-Commerce" Type="1">RGlzY291bnQgSXRlbSBUeXBl</PHRASE>
<PHRASE Label="la_col_LastUpdated" Module="In-Commerce" Type="1">TGFzdCBVcGRhdGVk</PHRASE>
<PHRASE Label="la_col_ManufacturerName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_Marketplace" Module="In-Commerce" Type="1">TWFya2V0cGxhY2U=</PHRASE>
<PHRASE Label="la_col_OrderDate" Module="In-Commerce" Type="1">RGF0ZQ==</PHRASE>
<PHRASE Label="la_col_OrderTotal" Module="In-Commerce" Type="1">T3JkZXIgVG90YWw=</PHRASE>
<PHRASE Label="la_col_PaymentTypeName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_Percent" Module="In-Commerce" Type="1">UGVyY2VudA==</PHRASE>
<PHRASE Label="la_col_PlanName" Module="In-Commerce" Type="1">UGxhbiBOYW1l</PHRASE>
<PHRASE Label="la_col_Processing" Module="In-Commerce" Type="1">UHJvY2Vzc2luZw==</PHRASE>
<PHRASE Label="la_col_Product" Module="In-Commerce" Type="1">UHJvZHVjdA==</PHRASE>
<PHRASE Label="la_col_ProductBackOrderDate" Module="In-Commerce" Type="1">QmFja09yZGVyIERhdGU=</PHRASE>
<PHRASE Label="la_col_ProductCreatedOn" Module="In-Commerce" Type="1">Q3JlYXRlZCBPbg==</PHRASE>
<PHRASE Label="la_col_ProductName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_ProductNameId" Module="In-Commerce" Type="1">UHJvZHVjdCBOYW1lIChJRCk=</PHRASE>
<PHRASE Label="la_col_ProductSKU" Module="In-Commerce" Type="1">U0tV</PHRASE>
<PHRASE Label="la_col_ProductWeight" Module="In-Commerce" Type="1">V2VpZ2h0</PHRASE>
<PHRASE Label="la_col_Profit" Module="In-Commerce" Type="1">UHJvZml0</PHRASE>
<PHRASE Label="la_col_Quantity" Module="In-Commerce" Type="1">UXR5Lg==</PHRASE>
<PHRASE Label="la_col_QuantityAvailable" Module="In-Commerce" Type="1">QXZhaWwu</PHRASE>
<PHRASE Label="la_col_QuantityReserved" Module="In-Commerce" Type="1">UmVzZXJ2ZWQ=</PHRASE>
<PHRASE Label="la_col_ReturnAmount" Module="In-Commerce" Type="1">UmV0LiBBbW91bnQ=</PHRASE>
<PHRASE Label="la_col_ReturnedOn" Module="In-Commerce" Type="1">UmV0LiBEYXRl</PHRASE>
<PHRASE Label="la_col_ReturnType" Module="In-Commerce" Type="1">UmV0LiBUeXBl</PHRASE>
<PHRASE Label="la_col_Shipping" Module="In-Commerce" Type="1">U2hpcHBpbmc=</PHRASE>
<PHRASE Label="la_col_ShippingFromLocation" Module="In-Commerce" Type="1">RnJvbSBMb2NhdGlvbg==</PHRASE>
<PHRASE Label="la_col_Size" Module="In-Commerce" Type="1">U2l6ZQ==</PHRASE>
<PHRASE Label="la_col_StartedOn" Module="In-Commerce" Type="1">U3RhcnRlZCBPbg==</PHRASE>
<PHRASE Label="la_col_Tax" Module="In-Commerce" Type="1">VGF4</PHRASE>
<PHRASE Label="la_Combined" Module="In-Commerce" Type="1">Q29tYmluZWQ=</PHRASE>
<PHRASE Label="la_comment_LeaveBlank" Module="In-Commerce" Type="1">KGxlYXZlIGJsYW5rIGZvciB1bmxpbWl0ZWQp</PHRASE>
<PHRASE Label="la_comm_Any" Module="In-Commerce" Type="1">QW55</PHRASE>
<PHRASE Label="la_comm_OrderContents" Module="In-Commerce" Type="1">T3JkZXIgQ29udGVudHM=</PHRASE>
<PHRASE Label="la_comm_ShippingBillingInfo" Module="In-Commerce" Type="1">U2hpcHBpbmcgJiBCaWxsaW5nIEluZm9ybWF0aW9u</PHRASE>
<PHRASE Label="la_comm_Timeframe" Module="In-Commerce" Type="1">VGltZWZyYW1l</PHRASE>
+ <PHRASE Label="la_config_OrderVATIncluded" Module="In-Commerce" Type="1">VGF4ZXMgaW5jbHVkZWQgaW4gcHJvZHVjdCBwcmljZSwgc2hpcHBpbmcgY29zdCAmIHByb2Nlc3NpbmcgZmVl</PHRASE>
<PHRASE Label="la_config_ShowProductImagesInOrders" Module="In-Commerce" Type="1">U2hvdyBQcm9kdWN0IEltYWdlcyBpbiBPcmRlcnM=</PHRASE>
<PHRASE Label="la_conf_DaysToBeNew" Module="In-Commerce" Type="1">TnVtYmVyIG9mIGRheXMgZm9yIGEgcHJvZHVjdCB0byBiZSBOZXc=</PHRASE>
<PHRASE Label="la_conf_DefaultCouponDuration" Module="In-Commerce" Type="1">RGVmYXVsdCBjb3Vwb24gZHVyYXRpb24gKGRheXMp</PHRASE>
<PHRASE Label="la_conf_EditorPicksAboveRegular" Module="In-Commerce" Type="1">RGlzcGxheSBFZGl0b3IgUGlja3MgYWJvdmUgcmVndWxhciBwcm9kdWN0cw==</PHRASE>
<PHRASE Label="la_conf_OrderProductsBy" Module="In-Commerce" Type="1">T3JkZXIgcHJvZHVjdHMgYnk=</PHRASE>
<PHRASE Label="la_conf_ThenBy" Module="In-Commerce" Type="1">VGhlbiBCeQ==</PHRASE>
<PHRASE Label="la_COP" Module="In-Commerce" Type="1">Q29sb21iaWFuIFBlc28=</PHRASE>
<PHRASE Label="la_COU" Module="In-Commerce" Type="1">Q09V</PHRASE>
<PHRASE Label="la_couldnt_retrieve_rate" Module="In-Commerce" Type="1">Q291bGRuJ3QgcmV0cmlldmUgY3VycmVuY3kgcmF0ZSE=</PHRASE>
<PHRASE Label="la_Country" Module="In-Commerce" Type="1">Q291bnRyeQ==</PHRASE>
<PHRASE Label="la_CouponCode" Module="In-Commerce" Type="1">Q291cG9uIENvZGU=</PHRASE>
<PHRASE Label="la_CRC" Module="In-Commerce" Type="1">Q29zdGEgUmljYW4gQ29sb24=</PHRASE>
<PHRASE Label="la_CreditDirect" Module="In-Commerce" Type="1">Q3JlZGl0IERpcmVjdA==</PHRASE>
<PHRASE Label="la_CreditPreAuthorize" Module="In-Commerce" Type="1">Q3JlZGl0IFByZS1BdXRob3JpemU=</PHRASE>
<PHRASE Label="la_CSD" Module="In-Commerce" Type="1">Q1NE</PHRASE>
<PHRASE Label="la_CUP" Module="In-Commerce" Type="1">Q3ViYW4gUGVzbw==</PHRASE>
<PHRASE Label="la_CVE" Module="In-Commerce" Type="1">Q2FwZSBWZXJkZSBFc2N1ZG8=</PHRASE>
<PHRASE Label="la_CYP" Module="In-Commerce" Type="1">Q3lwcnVzIFBvdW5k</PHRASE>
<PHRASE Label="la_CZK" Module="In-Commerce" Type="1">Q3plY2ggS29ydW5h</PHRASE>
<PHRASE Label="la_day" Module="In-Commerce" Type="1">ZGF5</PHRASE>
<PHRASE Label="la_Denied" Module="In-Commerce" Type="1">RGVuaWVk</PHRASE>
<PHRASE Label="la_Details" Module="In-Commerce" Type="1">VmlldyBEZXRhaWxz</PHRASE>
<PHRASE Label="la_Discount" Module="In-Commerce" Type="1">RGlzY291bnQ=</PHRASE>
<PHRASE Label="la_DJF" Module="In-Commerce" Type="1">RGppYm91dGkgRnJhbmM=</PHRASE>
<PHRASE Label="la_DKK" Module="In-Commerce" Type="1">RGFuaXNoIEtyb25l</PHRASE>
<PHRASE Label="la_DOP" Module="In-Commerce" Type="1">RG9taW5pY2FuIFBlc28=</PHRASE>
<PHRASE Label="la_DZD" Module="In-Commerce" Type="1">QWxnZXJpYW4gRGluYXI=</PHRASE>
<PHRASE Label="la_ECS" Module="In-Commerce" Type="1">U3VjcmU=</PHRASE>
<PHRASE Label="la_ECV" Module="In-Commerce" Type="1">VW5pZGFkIGRlIFZhbG9yIENvbnN0YW50ZSAoVVZDKQ==</PHRASE>
<PHRASE Label="la_Edit_User" Module="In-Commerce" Type="1">RWRpdCBVc2Vy</PHRASE>
<PHRASE Label="la_EEK" Module="In-Commerce" Type="1">S3Jvb24=</PHRASE>
<PHRASE Label="la_EGP" Module="In-Commerce" Type="1">RWd5cHRpYW4gUG91bmQ=</PHRASE>
<PHRASE Label="la_EnableBackorderAvailabilityDate" Module="In-Commerce" Type="1">RW5hYmxlIGJhY2tvcmRlciBhdmFpbGFiaWxpdHkgZGF0ZQ==</PHRASE>
<PHRASE Label="la_EnableBackordering" Module="In-Commerce" Type="1">RW5hYmxlIEJhY2tvcmRlcmluZw==</PHRASE>
<PHRASE Label="la_enable_html" Module="In-Commerce" Type="1">RW5hYmxlIEhUTUw/</PHRASE>
<PHRASE Label="la_EnterNumberOfCopies" Module="In-Commerce" Type="1">TnVtYmVyIE9mIENvcGllcw==</PHRASE>
<PHRASE Label="la_EntireOrderConfirmation" Module="In-Commerce" Type="1">VGhpcyB3aWxsIHJlbW92ZSBhbGwgc2VsZWN0ZWQgcHJvZHVjdHMhIEFyZSB5b3Ugc3VyZT8=</PHRASE>
<PHRASE Label="la_ERN" Module="In-Commerce" Type="1">TmFrZmE=</PHRASE>
<PHRASE Label="la_error_CannotDeletePaymentType" Module="In-Commerce" Type="1">VGhlIHByaW1hcnkgcGF5bWVudCB0eXBlIGNhbm5vdCBiZSBkZWxldGVkIQ==</PHRASE>
<PHRASE Label="la_error_EnableCurlFirst" Module="In-Commerce" Type="1">RW5hYmxlIENVUkwgZmlyc3Q=</PHRASE>
<PHRASE Label="la_error_FillInShippingFromAddress" Module="In-Commerce" Type="1">RmlsbCBpbiBTaGlwcGluZyBGcm9tIGFkZHJlc3MgaW4gQ29udGFjdCBJbmZvcm1hdGlvbiBiZWZvcmUgZW5hYmxpbmcgSW50ZXJzaGlwcGVy</PHRASE>
<PHRASE Label="la_ETB" Module="In-Commerce" Type="1">RXRoaW9waWFuIEJpcnI=</PHRASE>
<PHRASE Label="la_EUR" Module="In-Commerce" Type="1">RXVybw==</PHRASE>
<PHRASE Label="la_EuropeanCentralBank" Module="In-Commerce" Type="1">RXVyb3BlYW4gQ2VudHJhbCBCYW5rIC0gd3d3LmVjYi5pbnQ=</PHRASE>
<PHRASE Label="la_ExchangeRateSource" Module="In-Commerce" Type="1">Q2hvb3NlIHRoZSBleGNoYW5nZSByYXRlIHNvdXJjZQ==</PHRASE>
<PHRASE Label="la_Expiration" Module="In-Commerce" Type="1">RXhwaXJhdGlvbg==</PHRASE>
<PHRASE Label="la_Features" Module="In-Commerce" Type="1">RmVhdHVyZXM=</PHRASE>
<PHRASE Label="la_FederalReserveBank" Module="In-Commerce" Type="1">RmVkZXJhbCBSZXNlcnZlIEJhbmsgb2YgTmV3IFlvcmsgLSB3d3cubnkuZnJiLm9yZw==</PHRASE>
<PHRASE Label="la_FJD" Module="In-Commerce" Type="1">RmlqaSBEb2xsYXI=</PHRASE>
<PHRASE Label="la_FKP" Module="In-Commerce" Type="1">RmFsa2xhbmQgSXNsYW5kcyBQb3VuZA==</PHRASE>
<PHRASE Label="la_Flat" Module="In-Commerce" Type="1">RmxhdA==</PHRASE>
<PHRASE Label="la_fld_AccessDuration" Module="In-Commerce" Type="1" Column="QWNjZXNzIER1cmF0aW9u">QWNjZXNzIER1cmF0aW9u</PHRASE>
<PHRASE Label="la_fld_AccessDurationType" Module="In-Commerce" Type="1">QWNjZXNzIER1cmF0aW9uIFR5cGU=</PHRASE>
<PHRASE Label="la_fld_AccessDurationUnit" Module="In-Commerce" Type="1" Column="QWNjZXNzIER1cmF0aW9uIFVuaXQ=">QWNjZXNzIER1cmF0aW9uIFVuaXQ=</PHRASE>
<PHRASE Label="la_fld_AccessEnd" Module="In-Commerce" Type="1">QWNjZXNzIEVuZA==</PHRASE>
<PHRASE Label="la_fld_AccessGroup" Module="In-Commerce" Type="1">QWNjZXNzIEdyb3Vw</PHRASE>
<PHRASE Label="la_fld_AccessStart" Module="In-Commerce" Type="1">QWNjZXNzIFN0YXJ0</PHRASE>
<PHRASE Label="la_fld_AccumulatedAmount" Module="In-Commerce" Type="1">QWNjdW11bGF0ZWQgQW1vdW50</PHRASE>
<PHRASE Label="la_fld_AddedOn" Module="In-Commerce" Type="1" Column="QWRkZWQgT24=">QWRkZWQgT24=</PHRASE>
<PHRASE Label="la_fld_Address1" Module="In-Commerce" Type="1">QWRkcmVzcyBMaW5lIDE=</PHRASE>
<PHRASE Label="la_fld_Address2" Module="In-Commerce" Type="1">QWRkcmVzcyBMaW5lIDI=</PHRASE>
<PHRASE Label="la_fld_AdminComment" Module="In-Commerce" Type="1">QWRtaW4gQ29tbWVudA==</PHRASE>
<PHRASE Label="la_fld_AdminComments" Module="In-Commerce" Type="1">QWRtaW4gQ29tbWVudHM=</PHRASE>
<PHRASE Label="la_fld_AffiliateCode" Module="In-Commerce" Type="1">QWZmaWxpYXRlIENvZGU=</PHRASE>
<PHRASE Label="la_fld_AffiliateCommission" Module="In-Commerce" Type="1">QWZmaWxpYXRlIENvbW1pc3Npb24=</PHRASE>
<PHRASE Label="la_fld_AffiliateLink" Module="In-Commerce" Type="1">QWZmaWxpYXRlIExpbms=</PHRASE>
<PHRASE Label="la_fld_AffiliatePlan" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFBsYW4=</PHRASE>
<PHRASE Label="la_fld_AffiliatePlanPayment" Module="In-Commerce" Type="1">UGF5bWVudA==</PHRASE>
<PHRASE Label="la_fld_AffiliateUser" Module="In-Commerce" Type="1" Column="QWZmaWxpYXRlIFVzZXI=">QWZmaWxpYXRlIFVzZXI=</PHRASE>
<PHRASE Label="la_fld_AllowedShippingTypes" Module="In-Commerce" Type="1">U2VsZWN0ZWQ=</PHRASE>
<PHRASE Label="la_fld_Amount" Module="In-Commerce" Type="1" Column="QW1vdW50">QW1vdW50</PHRASE>
<PHRASE Label="la_fld_AmountToPay" Module="In-Commerce" Type="1">QW1vdW50IFRvIFBheQ==</PHRASE>
<PHRASE Label="la_fld_AssignedCoupon" Module="In-Commerce" Type="1">QXNzaWduZWQgQ291cG9u</PHRASE>
<PHRASE Label="la_fld_AuthorizationResult" Module="In-Commerce" Type="1">QXV0aG9yaXphdGlvbiBSZXN1bHQ=</PHRASE>
<PHRASE Label="la_fld_Availability" Module="In-Commerce" Type="1" Column="QXZhaWwu">QXZhaWxhYmxl</PHRASE>
<PHRASE Label="la_fld_AvailableGroups" Module="In-Commerce" Type="1">QXZhaWxhYmxlIFVzZXIgR3JvdXBz</PHRASE>
<PHRASE Label="la_fld_AvailableShippingTypes" Module="In-Commerce" Type="1">QXZhaWxhYmxl</PHRASE>
<PHRASE Label="la_fld_BackOrder" Module="In-Commerce" Type="1">QmFja09yZGVy</PHRASE>
<PHRASE Label="la_fld_BackOrderDate" Module="In-Commerce" Type="1">QmFja29yZGVyIGF2YWlsYWJpbGl0eSBkYXRl</PHRASE>
<PHRASE Label="la_fld_BaseFee" Module="In-Commerce" Type="1" Column="QmFzZSBGZWU=">QmFzZSBGZWU=</PHRASE>
<PHRASE Label="la_fld_BillingAddress1" Module="In-Commerce" Type="1">QmlsbGluZyBBZGRyZXNzIExpbmUgMQ==</PHRASE>
<PHRASE Label="la_fld_BillingAddress2" Module="In-Commerce" Type="1">QmlsbGluZyBBZGRyZXNzIExpbmUgMg==</PHRASE>
<PHRASE Label="la_fld_BillingCity" Module="In-Commerce" Type="1">QmlsbGluZyBDaXR5</PHRASE>
<PHRASE Label="la_fld_BillingCompany" Module="In-Commerce" Type="1">QmlsbGluZyBDb21wYW55</PHRASE>
<PHRASE Label="la_fld_BillingCountry" Module="In-Commerce" Type="1" Column="QmlsbGluZyBDb3VudHJ5">QmlsbGluZyBDb3VudHJ5</PHRASE>
<PHRASE Label="la_fld_BillingEmail" Module="In-Commerce" Type="1">QmlsbGluZyBFbWFpbA==</PHRASE>
<PHRASE Label="la_fld_BillingFax" Module="In-Commerce" Type="1">QmlsbGluZyBGYXg=</PHRASE>
<PHRASE Label="la_fld_BillingPhone" Module="In-Commerce" Type="1">QmlsbGluZyBQaG9uZQ==</PHRASE>
<PHRASE Label="la_fld_BillingState" Module="In-Commerce" Type="1">QmlsbGluZyBTdGF0ZQ==</PHRASE>
<PHRASE Label="la_fld_BillingTo" Module="In-Commerce" Type="1">QmlsbGluZyBUbw==</PHRASE>
<PHRASE Label="la_fld_BillingZip" Module="In-Commerce" Type="1">QmlsbGluZyBaaXBjb2Rl</PHRASE>
<PHRASE Label="la_fld_BlockShippingAddress" Module="In-Commerce" Type="1">QmxvY2sgU2hpcHBpbmcgQWRkcmVzcyBFZGl0aW5n</PHRASE>
<PHRASE Label="la_fld_CaptureResult" Module="In-Commerce" Type="1">Q2FwdHVyZSBSZXN1bHQ=</PHRASE>
<PHRASE Label="la_fld_ChargeOnNextApprove" Module="In-Commerce" Type="1">Q2hhcmdlIG9uIE5leHQgQXBwcm92ZQ==</PHRASE>
<PHRASE Label="la_fld_CODallowed" Module="In-Commerce" Type="1" Column="Q09EIEFsbG93ZWQ=">Q09EIEFsbG93ZWQ=</PHRASE>
<PHRASE Label="la_fld_Code" Module="In-Commerce" Type="1" Column="Q29kZQ==">Q29kZQ==</PHRASE>
<PHRASE Label="la_fld_CODFlatSurcharge" Module="In-Commerce" Type="1" Column="Q09EIEZsYXQgU3VyZWNoYXJnZQ==">Q09EIEZsYXQgU3VyY2hhcmdl</PHRASE>
<PHRASE Label="la_fld_CODPercentSurcharge" Module="In-Commerce" Type="1" Column="Q09EIFBlcmNlbnQgU3VyY2hhcmdl">Q09EIFBlcmNlbnQgU3VyY2hhcmdl</PHRASE>
<PHRASE Label="la_fld_Comment" Module="In-Commerce" Type="1" Column="Q29tbWVudA==">Q29tbWVudA==</PHRASE>
<PHRASE Label="la_fld_Cost" Module="In-Commerce" Type="1" Column="Q29zdA==">Q29zdA==</PHRASE>
<PHRASE Label="la_fld_CostType" Module="In-Commerce" Type="1">Q29zdCBUeXBl</PHRASE>
<PHRASE Label="la_fld_CouponCode" Module="In-Commerce" Type="1" Column="Q291cG9uIENvZGU=">Q291cG9uIENvZGU=</PHRASE>
<PHRASE Label="la_fld_CreditCardNumber" Module="In-Commerce" Type="1" Column="Q3JlZGl0IENhcmQgTnVtYmVy">Q3JlZGl0IENhcmQgTnVtYmVy</PHRASE>
<PHRASE Label="la_fld_Currencies" Module="In-Commerce" Type="1">Q3VycmVuY2llcw==</PHRASE>
<PHRASE Label="la_fld_Currency" Module="In-Commerce" Type="1" Column="Q3VycmVuY3k=">Q3VycmVuY3k=</PHRASE>
<PHRASE Label="la_fld_CurrencyName" Module="In-Commerce" Type="1" Column="TmFtZQ==">TmFtZQ==</PHRASE>
<PHRASE Label="la_fld_CurrencySymbol" Module="In-Commerce" Type="1" Column="U3ltYm9s">U3ltYm9s</PHRASE>
<PHRASE Label="la_fld_CurrencySymbolPosition" Module="In-Commerce" Type="1" Column="U3ltYm9sIFBvc2l0aW9u">U3ltYm9sIFBvc2l0aW9u</PHRASE>
<PHRASE Label="la_fld_cust_p_ItemTemplate" Module="In-Commerce" Type="1">UHJvZHVjdCBJdGVtIFRlbXBsYXRl</PHRASE>
<PHRASE Label="la_fld_Date" Module="In-Commerce" Type="1">RGF0ZQ==</PHRASE>
<PHRASE Label="la_fld_DeliveryMethod" Module="In-Commerce" Type="1">RGVsaXZlcnkgTWV0aG9k</PHRASE>
<PHRASE Label="la_fld_DescriptionExcerpt" Module="In-Commerce" Type="1">RXhjZXJwdA==</PHRASE>
<PHRASE Label="la_fld_Discount" Module="In-Commerce" Type="1">RGlzY291bnQ=</PHRASE>
<PHRASE Label="la_fld_DisplayOnFront" Module="In-Commerce" Type="1" Column="RGlzcGxheSBvbiBGcm9udC1FbmQ=">RGlzcGxheSBvbiBGcm9udC1FbmQ=</PHRASE>
<PHRASE Label="la_fld_EmptyCellsAre" Module="In-Commerce" Type="1">RW1wdHkgQ2VsbHMgQXJl</PHRASE>
<PHRASE Label="la_fld_End" Module="In-Commerce" Type="1" Column="RW5k">RW5kIERhdGU=</PHRASE>
<PHRASE Label="la_fld_Expiration" Module="In-Commerce" Type="1" Column="RXhwaXJhdGlvbg==">RXhwaXJhdGlvbg==</PHRASE>
<PHRASE Label="la_fld_Featured" Module="In-Commerce" Type="1">RmVhdHVyZWQ=</PHRASE>
<PHRASE Label="la_fld_FirstDayDelivery" Module="In-Commerce" Type="1">Rmlyc3QgRGF5</PHRASE>
<PHRASE Label="la_fld_FlatSurcharge" Module="In-Commerce" Type="1" Column="RmxhdCBTdXJjaGFyZ2U=">RmxhdCBTdXJjaGFyZ2U=</PHRASE>
<PHRASE Label="la_fld_FreeShippingMinAmount" Module="In-Commerce" Type="1">TWluaW11bSBPcmRlciBUb3RhbCBmb3IgRnJlZSBTaGlwcGluZw==</PHRASE>
<PHRASE Label="la_fld_From" Module="In-Commerce" Type="1">RnJvbQ==</PHRASE>
<PHRASE Label="la_fld_FromAmount" Module="In-Commerce" Type="1" Column="RnJvbSBBbW91bnQ=">RnJvbSBBbW91bnQ=</PHRASE>
<PHRASE Label="la_fld_FromDateTime" Module="In-Commerce" Type="1">RnJvbSBkYXRlL3RpbWU=</PHRASE>
<PHRASE Label="la_fld_Gateway" Module="In-Commerce" Type="1">R2F0ZXdheQ==</PHRASE>
<PHRASE Label="la_fld_GiftCertificateAmountApplied" Module="In-Commerce" Type="1">R2lmdCBDZXJ0aWZpY2F0ZSBhbW91bnQ=</PHRASE>
<PHRASE Label="la_fld_GiftCertificateNumber" Module="In-Commerce" Type="1">R2lmdCBDZXJ0aWZpY2F0ZSBudW1iZXI=</PHRASE>
<PHRASE Label="la_fld_GroundDelivery" Module="In-Commerce" Type="1">R3JvdW5kIERlbGl2ZXJ5</PHRASE>
<PHRASE Label="la_fld_Groups" Module="In-Commerce" Type="1">VXNlciBHcm91cHMgU2VsZWN0aW9u</PHRASE>
<PHRASE Label="la_fld_Instructions" Module="In-Commerce" Type="1">SW5zdHJ1Y3Rpb25z</PHRASE>
<PHRASE Label="la_fld_InsuranceFee" Module="In-Commerce" Type="1">SW5zdXJhbmNlIENvc3Q=</PHRASE>
<PHRASE Label="la_fld_Insurance_Fee" Module="In-Commerce" Type="1">SW5zdXJhbmNlIENvc3Q=</PHRASE>
<PHRASE Label="la_fld_Insurance_Type" Module="In-Commerce" Type="1">SW5zdXJhbmNlIFR5cGU=</PHRASE>
<PHRASE Label="la_fld_InventoryStatus" Module="In-Commerce" Type="1">RW5hYmxlZA==</PHRASE>
<PHRASE Label="la_fld_IsFreePromoShipping" Module="In-Commerce" Type="1" Column="UHJvbW8=">VXNlIGFzIEZyZWUgUHJvbW8gU2hpcHBpbmc=</PHRASE>
<PHRASE Label="la_fld_IsRecurringBilling" Module="In-Commerce" Type="1">UmVjdXJyaW5nIEJpbGxpbmc=</PHRASE>
<PHRASE Label="la_fld_ItemsSold" Module="In-Commerce" Type="1">SXRlbXMgU29sZA==</PHRASE>
<PHRASE Label="la_fld_LastPaymentDate" Module="In-Commerce" Type="1">TGFzdCBQYXltZW50IERhdGU=</PHRASE>
<PHRASE Label="la_fld_LastUsedBy" Module="In-Commerce" Type="1" Column="TGFzdCBVc2VkIEJ5">TGFzdCBVc2VkIEJ5</PHRASE>
<PHRASE Label="la_fld_LastUsedOn" Module="In-Commerce" Type="1" Column="TGFzdCBVc2VkIE9u">TGFzdCBVc2VkIE9u</PHRASE>
<PHRASE Label="la_fld_Listable" Module="In-Commerce" Type="1" Column="TGlzdGFibGU=">TGlzdGFibGU=</PHRASE>
<PHRASE Label="la_fld_ManageCombinations" Module="In-Commerce" Type="1">TWFuYWdlIE9wdGlvbnMgQ29tYmluYXRpb25z</PHRASE>
<PHRASE Label="la_fld_ManageShipping" Module="In-Commerce" Type="1">TWFuYWdlIFNoaXBwaW5nIFR5cGVz</PHRASE>
<PHRASE Label="la_fld_Manufacturer" Module="In-Commerce" Type="1" Column="TWFudWZhY3R1cmVy">TWFudWZhY3R1cmVy</PHRASE>
<PHRASE Label="la_fld_MaxQty" Module="In-Commerce" Type="1" Column="TWF4IFF0eQ==">TWF4IFF0eQ==</PHRASE>
<PHRASE Label="la_fld_MinimumPaymentAmount" Module="In-Commerce" Type="1">TWluaW1hbCBQYXltZW50IEFtb3VudA==</PHRASE>
<PHRASE Label="la_fld_MinQty" Module="In-Commerce" Type="1" Column="TWluIFF0eQ==">TWluIFF0eQ==</PHRASE>
<PHRASE Label="la_fld_MSRP" Module="In-Commerce" Type="1">TVNSUA==</PHRASE>
<PHRASE Label="la_fld_Negotiated" Module="In-Commerce" Type="1" Column="TmVnb3RpYXRlZA==">TmVnb3RpYXRlZA==</PHRASE>
<PHRASE Label="la_fld_NextCharge" Module="In-Commerce" Type="1">TmV4dCBDaGFyZ2UgRGF0ZQ==</PHRASE>
<PHRASE Label="la_fld_NumberOfUses" Module="In-Commerce" Type="1" Column="TnVtYmVyIE9mIFVzZXM=">TnVtYmVyIE9mIFVzZXM=</PHRASE>
<PHRASE Label="la_fld_OnHold" Module="In-Commerce" Type="1" Column="T24gSG9sZA==">T24gSG9sZA==</PHRASE>
<PHRASE Label="la_fld_OnSale" Module="In-Commerce" Type="1" Column="T24gU2FsZQ==">UHJvZHVjdCBvbiBTYWxl</PHRASE>
<PHRASE Label="la_fld_OptionPrice" Module="In-Commerce" Type="1">T3B0aW9uIFByaWNl</PHRASE>
<PHRASE Label="la_fld_OptionsSelectionMode" Module="In-Commerce" Type="1">T3B0aW9ucyBTZWxlY3Rpb24gTW9kZQ==</PHRASE>
<PHRASE Label="la_fld_OptionType" Module="In-Commerce" Type="1" Column="T3B0aW9uIFR5cGU=">T3B0aW9uIFR5cGU=</PHRASE>
<PHRASE Label="la_fld_OptionValue" Module="In-Commerce" Type="1">T3B0aW9uIFZhbHVl</PHRASE>
<PHRASE Label="la_fld_OptionValues" Module="In-Commerce" Type="1">T3B0aW9uIFZhbHVlcw==</PHRASE>
<PHRASE Label="la_fld_OrderId" Module="In-Commerce" Type="1">T3JkZXIgSUQ=</PHRASE>
<PHRASE Label="la_fld_OrderIP" Module="In-Commerce" Type="1" Column="SVAgQWRkcmVzcw==">SVAgQWRkcmVzcw==</PHRASE>
<PHRASE Label="la_fld_OrderNumber" Module="In-Commerce" Type="1" Column="TnVtYmVy">TnVtYmVy</PHRASE>
<PHRASE Label="la_fld_Original" Module="In-Commerce" Type="1">T3JpZ2luYWw=</PHRASE>
<PHRASE Label="la_fld_OriginalAmount" Module="In-Commerce" Type="1">T3JpZ2luYWwgQW1vdW50</PHRASE>
<PHRASE Label="la_fld_PaymentAccount" Module="In-Commerce" Type="1">UGF5bWVudCBBY2NvdW50</PHRASE>
<PHRASE Label="la_fld_PaymentCardType" Module="In-Commerce" Type="1">Q2FyZCBUeXBl</PHRASE>
<PHRASE Label="la_fld_PaymentCCExpDate" Module="In-Commerce" Type="1">Q2FyZCBFeHBpcmF0aW9u</PHRASE>
<PHRASE Label="la_fld_PaymentCVV2" Module="In-Commerce" Type="1">Q1ZWMg==</PHRASE>
<PHRASE Label="la_fld_PaymentDate" Module="In-Commerce" Type="1" Column="UGF5bWVudCBEYXRl">UGF5bWVudCBEYXRl</PHRASE>
<PHRASE Label="la_fld_PaymentExpires" Module="In-Commerce" Type="1">UGF5bWVudCBEYXRlL0V4cGlyYXRpb24=</PHRASE>
<PHRASE Label="la_fld_PaymentInterval" Module="In-Commerce" Type="1">UGF5bWVudCBJbnRlcnZhbA==</PHRASE>
<PHRASE Label="la_fld_PaymentNameOnCard" Module="In-Commerce" Type="1">TmFtZSBvbiB0aGUgQ2FyZA==</PHRASE>
<PHRASE Label="la_fld_PaymentReference" Module="In-Commerce" Type="1" Column="UGF5bWVudCBSZWZlcmVuY2U=">UGF5bWVudCBSZWZlcmVuY2U=</PHRASE>
<PHRASE Label="la_fld_PaymentType" Module="In-Commerce" Type="1" Column="UGF5bWVudCBUeXBl">UGF5bWVudCBUeXBl</PHRASE>
<PHRASE Label="la_fld_PaymentTypeCurrencies" Module="In-Commerce" Type="1">QXZhaWxhYmxlIEN1cnJlbmNpZXM=</PHRASE>
<PHRASE Label="la_fld_PaymentTypeId" Module="In-Commerce" Type="1">UGF5bWVudCBUeXBlIElk</PHRASE>
<PHRASE Label="la_fld_PaymentTypes" Module="In-Commerce" Type="1">UGF5bWVudCBUeXBlcw==</PHRASE>
<PHRASE Label="la_fld_PercentSurcharge" Module="In-Commerce" Type="1" Column="UGVyY2VudCBTdXJjaGFyZ2U=">UGVyY2VudCBTdXJjaGFyZ2U=</PHRASE>
<PHRASE Label="la_fld_Period" Module="In-Commerce" Type="1">UGVyaW9k</PHRASE>
<PHRASE Label="la_fld_PlacedOrdersEdit" Module="In-Commerce" Type="1">QWxsb3cgUGxhY2VkIE9yZGVycyBFZGl0aW5n</PHRASE>
<PHRASE Label="la_fld_PlanType" Module="In-Commerce" Type="1" Column="UGxhbiBUeXBl">UGxhbiBUeXBl</PHRASE>
<PHRASE Label="la_fld_Points" Module="In-Commerce" Type="1" Column="UG9pbnRz">UG9pbnRz</PHRASE>
<PHRASE Label="la_fld_Price" Module="In-Commerce" Type="1" Column="UHJpY2U=">UHJpY2U=</PHRASE>
<PHRASE Label="la_fld_PriceType" Module="In-Commerce" Type="1">UHJpY2UgTW9kaWZpZXIgVHlwZQ==</PHRASE>
<PHRASE Label="la_fld_ProcessingFee" Module="In-Commerce" Type="1">UHJvY2Vzc2luZyBGZWU=</PHRASE>
<PHRASE Label="la_fld_ProductFreeShipping" Module="In-Commerce" Type="1">TWluaW11bSBxdWFudGl0eSBmb3IgRnJlZSBTaGlwcGluZw==</PHRASE>
<PHRASE Label="la_fld_ProductType" Module="In-Commerce" Type="1" Column="VHlwZQ==">UHJvZHVjdCBUeXBl</PHRASE>
<PHRASE Label="la_fld_Product_MaxHotNumber" Module="In-Commerce" Type="1">TWF4aW11bSBudW1iZXIgb2YgVG9wIFNlbGxlciBpdGVtcw==</PHRASE>
<PHRASE Label="la_fld_Product_MinPopRating" Module="In-Commerce" Type="1">TWluaW11bSByYXRpbmcgdG8gY29uc2lkZXIgaXRlbSBQT1A=</PHRASE>
<PHRASE Label="la_fld_Product_MinPopVotes" Module="In-Commerce" Type="1">TWluaW11bSBudW1iZXIgb2Ygc29sZCBpdGVtcyB0byBjb25zaWRlciBpdGVtIFBPUA==</PHRASE>
<PHRASE Label="la_fld_QtyBackOrdered" Module="In-Commerce" Type="1" Column="QmFja29yZGVyZWQ=">UXR5IEJhY2tPcmRlcmVk</PHRASE>
<PHRASE Label="la_fld_QtyInStock" Module="In-Commerce" Type="1" Column="UXR5IEluIFN0b2Nr">UXR5IEluIFN0b2Nr</PHRASE>
<PHRASE Label="la_fld_QtyInStockMin" Module="In-Commerce" Type="1" Column="UXR5SW5TdG9ja01pbg==">TWluaW11bSBxdWFudGl0eSBpbiBzdG9jayB0aHJlc2hvbGQ=</PHRASE>
<PHRASE Label="la_fld_QtyOnOrder" Module="In-Commerce" Type="1" Column="UXR5IE9uIE9yZGVy">UXR5IE9uIE9yZGVy</PHRASE>
<PHRASE Label="la_fld_QtyReserved" Module="In-Commerce" Type="1" Column="UXR5IFJlc2VydmVk">UXR5IFJlc2VydmVk</PHRASE>
<PHRASE Label="la_fld_QtySold" Module="In-Commerce" Type="1">UXR5IFNvbGQ=</PHRASE>
<PHRASE Label="la_fld_RateToPrimary" Module="In-Commerce" Type="1" Column="UmF0ZSBUbyBQcmltYXJ5">UmF0ZSBUbyBQcmltYXJ5</PHRASE>
<PHRASE Label="la_fld_RegisteredOn" Module="In-Commerce" Type="1" Column="UmVnaXN0ZXJlZCBPbg==">UmVnaXN0ZXJlZCBPbg==</PHRASE>
<PHRASE Label="la_fld_RemainingAmount" Module="In-Commerce" Type="1" Column="UmVtYWluaW5nIEFtb3VudA==">UmVtYWluaW5nIEFtb3VudA==</PHRASE>
<PHRASE Label="la_fld_ReportType" Module="In-Commerce" Type="1">UmVwb3J0IFR5cGU=</PHRASE>
<PHRASE Label="la_fld_SecondDayDelivery" Module="In-Commerce" Type="1">U2Vjb25kIERheQ==</PHRASE>
<PHRASE Label="la_fld_SelectedGroups" Module="In-Commerce" Type="1">U2VsZWN0ZWQgVXNlciBHcm91cHM=</PHRASE>
<PHRASE Label="la_fld_ShipMethod" Module="In-Commerce" Type="1">U2hpcCBNZXRob2Q=</PHRASE>
<PHRASE Label="la_fld_ShippingAddress1" Module="In-Commerce" Type="1">U2hpcHBpbmcgQWRkcmVzcyBMaW5lIDE=</PHRASE>
<PHRASE Label="la_fld_ShippingAddress2" Module="In-Commerce" Type="1">U2hpcHBpbmcgQWRkcmVzcyBMaW5lIDI=</PHRASE>
<PHRASE Label="la_fld_ShippingCity" Module="In-Commerce" Type="1">U2hpcHBpbmcgQ2l0eQ==</PHRASE>
<PHRASE Label="la_fld_ShippingCode" Module="In-Commerce" Type="1">Q29kZQ==</PHRASE>
<PHRASE Label="la_fld_ShippingCompany" Module="In-Commerce" Type="1">U2hpcHBpbmcgQ29tcGFueQ==</PHRASE>
<PHRASE Label="la_fld_ShippingControl" Module="In-Commerce" Type="1">U2hpcHBpbmcgQ29udHJvbA==</PHRASE>
<PHRASE Label="la_fld_ShippingCost" Module="In-Commerce" Type="1">U2hpcHBpbmcgQ29zdA==</PHRASE>
<PHRASE Label="la_fld_ShippingCountry" Module="In-Commerce" Type="1" Column="U2hpcHBpbmcgQ291bnRyeQ==">U2hpcHBpbmcgQ291bnRyeQ==</PHRASE>
<PHRASE Label="la_fld_ShippingCustomerAccount" Module="In-Commerce" Type="1">U2hpcHBpbmcgQ3VzdG9tZXIgQWNjb3VudA==</PHRASE>
<PHRASE Label="la_fld_ShippingDate" Module="In-Commerce" Type="1">U2hpcHBpbmcgRGF0ZS9UaW1l</PHRASE>
<PHRASE Label="la_fld_ShippingEmail" Module="In-Commerce" Type="1">U2hpcHBpbmcgRW1haWw=</PHRASE>
<PHRASE Label="la_fld_ShippingFax" Module="In-Commerce" Type="1">U2hpcHBpbmcgRmF4</PHRASE>
<PHRASE Label="la_fld_ShippingMode" Module="In-Commerce" Type="1">QWxsb3dlZCBTaGlwcGluZyBUeXBlcw==</PHRASE>
<PHRASE Label="la_fld_ShippingName" Module="In-Commerce" Type="1" Column="TmFtZQ==">TmFtZQ==</PHRASE>
<PHRASE Label="la_fld_ShippingOption" Module="In-Commerce" Type="1">U2hpcHBpbmcgT3B0aW9u</PHRASE>
<PHRASE Label="la_fld_ShippingOptions" Module="In-Commerce" Type="1">U2hpcHBpbmcgT3B0aW9ucw==</PHRASE>
<PHRASE Label="la_fld_ShippingPhone" Module="In-Commerce" Type="1">U2hpcHBpbmcgUGhvbmU=</PHRASE>
<PHRASE Label="la_fld_ShippingQuoteEngineName" Module="In-Commerce" Type="1" Column="TmFtZQ==">TmFtZQ==</PHRASE>
<PHRASE Label="la_fld_ShippingState" Module="In-Commerce" Type="1">U2hpcHBpbmcgU3RhdGU=</PHRASE>
<PHRASE Label="la_fld_ShippingTo" Module="In-Commerce" Type="1">U2hpcHBpbmcgVG8=</PHRASE>
<PHRASE Label="la_fld_ShippingTracking" Module="In-Commerce" Type="1">U2hpcHBpbmcgVHJhY2tpbmcvUmVmZXJlbmNl</PHRASE>
<PHRASE Label="la_fld_ShippingType" Module="In-Commerce" Type="1" Column="VHlwZQ==">U2hpcHBpbmcgVHlwZQ==</PHRASE>
<PHRASE Label="la_fld_ShippingTypeId" Module="In-Commerce" Type="1">U2hpcHBpbmcgVHlwZSBJRA==</PHRASE>
<PHRASE Label="la_fld_ShippingTypes" Module="In-Commerce" Type="1">U2hpcHBpbmcgVHlwZXM=</PHRASE>
<PHRASE Label="la_fld_ShippingZip" Module="In-Commerce" Type="1">U2hpcHBpbmcgWmlwY29kZQ==</PHRASE>
<PHRASE Label="la_fld_ShipZoneName" Module="In-Commerce" Type="1" Column="U2hpcHBpbmcgWm9uZSBOYW1l">U2hpcHBpbmcgWm9uZSBOYW1l</PHRASE>
<PHRASE Label="la_fld_SKU" Module="In-Commerce" Type="1" Column="U0tV">U0tV</PHRASE>
<PHRASE Label="la_fld_SpeedCode" Module="In-Commerce" Type="1" Column="U2hpcHBpbmcgU3BlZWQ=">U3BlZWQgQ29kZQ==</PHRASE>
<PHRASE Label="la_fld_SSN" Module="In-Commerce" Type="1">U1NOL1RheCBJZC9WQVQgTnVtYmVy</PHRASE>
<PHRASE Label="la_fld_Start" Module="In-Commerce" Type="1" Column="U3RhcnQ=">U3RhcnQgRGF0ZQ==</PHRASE>
<PHRASE Label="la_fld_SubTotal" Module="In-Commerce" Type="1">U3VidG90YWw=</PHRASE>
<PHRASE Label="la_fld_TaxApplyToProcessing" Module="In-Commerce" Type="1" Column="QXBwbHkgdG8gUHJvY2Vzc2luZw==">QXBwbHkgdG8gUHJvY2Vzc2luZw==</PHRASE>
<PHRASE Label="la_fld_TaxApplyToShipping" Module="In-Commerce" Type="1" Column="QXBwbHkgdG8gU2hpcHBpbmc=">QXBwbHkgdG8gU2hpcHBpbmc=</PHRASE>
<PHRASE Label="la_fld_TaxValue" Module="In-Commerce" Type="1" Column="VGF4IFZhbHVl">VGF4IFZhbHVl</PHRASE>
<PHRASE Label="la_fld_TaxZoneName" Module="In-Commerce" Type="1" Column="VGF4IFpvbmUgTmFtZQ==">TmFtZSBvZiBUYXggWm9uZQ==</PHRASE>
<PHRASE Label="la_fld_ThirdDayDelivery" Module="In-Commerce" Type="1">VGhpcmQgRGF5</PHRASE>
<PHRASE Label="la_fld_Time" Module="In-Commerce" Type="1">VGltZQ==</PHRASE>
<PHRASE Label="la_fld_ToAmount" Module="In-Commerce" Type="1" Column="VG8gQW1vdW50">VG8gQW1vdW50</PHRASE>
<PHRASE Label="la_fld_ToDateTime" Module="In-Commerce" Type="1">VG8gZGF0ZS90aW1l</PHRASE>
<PHRASE Label="la_fld_TopSeller" Module="In-Commerce" Type="1">VG9wIFNlbGxlcg==</PHRASE>
<PHRASE Label="la_fld_TotalAmount" Module="In-Commerce" Type="1" Column="VG90YWwgQW1vdW50">VG90YWwgQW1vdW50</PHRASE>
<PHRASE Label="la_fld_TotalReturns" Module="In-Commerce" Type="1">VG90YWwgUmV0dXJucw==</PHRASE>
<PHRASE Label="la_fld_TotalSavings" Module="In-Commerce" Type="1">VG90YWwgU2F2aW5ncw==</PHRASE>
<PHRASE Label="la_fld_UnitsLimit" Module="In-Commerce" Type="1" Column="TGltaXQ=">TGluaXQ=</PHRASE>
<PHRASE Label="la_fld_UserComment" Module="In-Commerce" Type="1">VXNlciBDb21tZW50</PHRASE>
<PHRASE Label="la_fld_VAT" Module="In-Commerce" Type="1">U2FsZXMgVGF4L1ZBVA==</PHRASE>
+ <PHRASE Label="la_fld_VATIncluded" Module="In-Commerce" Type="1">VkFUIEluY2x1ZGVk</PHRASE>
<PHRASE Label="la_fld_VerificationResult" Module="In-Commerce" Type="1">VmVyaWZpY2F0aW9uIFJlc3VsdA==</PHRASE>
<PHRASE Label="la_fld_Weight" Module="In-Commerce" Type="1" Column="V2VpZ2h0">V2VpZ2h0</PHRASE>
<PHRASE Label="la_fld_WeightType" Module="In-Commerce" Type="1">V2VpZ2h0IE1vZGlmaWVyIFR5cGU=</PHRASE>
<PHRASE Label="la_fld_ZoneName" Module="In-Commerce" Type="1" Column="Wm9uZSBOYW1l">Wm9uZSBOYW1l</PHRASE>
<PHRASE Label="la_fld_ZoneType" Module="In-Commerce" Type="1" Column="Wm9uZSBUeXBl">VHlwZQ==</PHRASE>
<PHRASE Label="la_fld_Zone_Type" Module="In-Commerce" Type="1">VHlwZQ==</PHRASE>
<PHRASE Label="la_FontColor" Module="In-Commerce" Type="1">Rm9udCBDb2xvcg==</PHRASE>
<PHRASE Label="la_FreeShipping" Module="In-Commerce" Type="1">RnJlZSBTaGlwcGluZw==</PHRASE>
<PHRASE Label="la_GBP" Module="In-Commerce" Type="1">UG91bmQgU3Rlcmxpbmc=</PHRASE>
<PHRASE Label="la_GEL" Module="In-Commerce" Type="1">TGFyaQ==</PHRASE>
<PHRASE Label="la_GenerateCode" Module="In-Commerce" Type="1">R2VuZXJhdGUgQ29kZQ==</PHRASE>
<PHRASE Label="la_GHC" Module="In-Commerce" Type="1">Q2VkaQ==</PHRASE>
<PHRASE Label="la_GIP" Module="In-Commerce" Type="1">R2licmFsdGFyIFBvdW5k</PHRASE>
<PHRASE Label="la_GMD" Module="In-Commerce" Type="1">RGFsYXNp</PHRASE>
<PHRASE Label="la_GNF" Module="In-Commerce" Type="1">R3VpbmVhIEZyYW5j</PHRASE>
<PHRASE Label="la_GTQ" Module="In-Commerce" Type="1">UXVldHphbA==</PHRASE>
<PHRASE Label="la_GWP" Module="In-Commerce" Type="1">R3VpbmVhLUJpc3NhdSBQZXNv</PHRASE>
<PHRASE Label="la_GYD" Module="In-Commerce" Type="1">R3V5YW5hIERvbGxhcg==</PHRASE>
<PHRASE Label="la_Handling" Module="In-Commerce" Type="1">aGFuZGxpbmc=</PHRASE>
<PHRASE Label="la_Help" Module="In-Commerce" Type="1">SGVscA==</PHRASE>
<PHRASE Label="la_HKD" Module="In-Commerce" Type="1">SG9uZyBLb25nIERvbGxhcg==</PHRASE>
<PHRASE Label="la_HNL" Module="In-Commerce" Type="1">TGVtcGlyYQ==</PHRASE>
<PHRASE Label="la_HRK" Module="In-Commerce" Type="1">Q3JvYXRpYW4ga3VuYQ==</PHRASE>
<PHRASE Label="la_HTG" Module="In-Commerce" Type="1">R291cmRl</PHRASE>
<PHRASE Label="la_HUF" Module="In-Commerce" Type="1">Rm9yaW50</PHRASE>
<PHRASE Label="la_IDR" Module="In-Commerce" Type="1">UnVwaWFo</PHRASE>
<PHRASE Label="la_ILS" Module="In-Commerce" Type="1">TmV3IElzcmFlbGkgU2hlcWVs</PHRASE>
<PHRASE Label="la_In-commerce" Module="In-Commerce" Type="1">SW4tQ29tbWVyY2U=</PHRASE>
<PHRASE Label="la_Incomplete" Module="In-Commerce" Type="1">SW5jb21wbGV0ZQ==</PHRASE>
<PHRASE Label="la_INR" Module="In-Commerce" Type="1">SW5kaWFuIFJ1cGVl</PHRASE>
<PHRASE Label="la_Insurance_Fee" Module="In-Commerce" Type="1">SW5zdXJhbmNl</PHRASE>
<PHRASE Label="la_InvalidState" Module="In-Commerce" Type="1">U3RhdGUgaXMgaW52YWxpZA==</PHRASE>
<PHRASE Label="la_Invoiced" Module="In-Commerce" Type="1">SW52b2ljZWQ=</PHRASE>
<PHRASE Label="la_IQD" Module="In-Commerce" Type="1">SXJhcWkgRGluYXI=</PHRASE>
<PHRASE Label="la_IRR" Module="In-Commerce" Type="1">SXJhbmlhbiBSaWFs</PHRASE>
<PHRASE Label="la_ISK" Module="In-Commerce" Type="1">SWNlbGFuZCBLcm9uYQ==</PHRASE>
<PHRASE Label="la_ISOUsedIfBlank" Module="In-Commerce" Type="1">SVNPIENvZGUgd2lsbCBiZSB1c2VkIGlmIGxlZnQgYmxhbms=</PHRASE>
<PHRASE Label="la_ItemBackordered" Module="In-Commerce" Type="1">YmFja29yZGVyZWQ=</PHRASE>
<PHRASE Label="la_ItemTab_Products" Module="In-Commerce" Type="1">UHJvZHVjdHM=</PHRASE>
<PHRASE Label="la_JMD" Module="In-Commerce" Type="1">SmFtYWljYW4gRG9sbGFy</PHRASE>
<PHRASE Label="la_JOD" Module="In-Commerce" Type="1">Sm9yZGFuaWFuIERpbmFy</PHRASE>
<PHRASE Label="la_JPY" Module="In-Commerce" Type="1">WWVu</PHRASE>
<PHRASE Label="la_KES" Module="In-Commerce" Type="1">S2VueWFuIFNoaWxsaW5n</PHRASE>
<PHRASE Label="la_kg" Module="In-Commerce" Type="1">a2c=</PHRASE>
<PHRASE Label="la_KGS" Module="In-Commerce" Type="1">U29t</PHRASE>
<PHRASE Label="la_KHR" Module="In-Commerce" Type="1">UmllbA==</PHRASE>
<PHRASE Label="la_KMF" Module="In-Commerce" Type="1">Q29tb3JvIEZyYW5j</PHRASE>
<PHRASE Label="la_KPW" Module="In-Commerce" Type="1">Tm9ydGggS29yZWFuIFdvbg==</PHRASE>
<PHRASE Label="la_KRW" Module="In-Commerce" Type="1">V29u</PHRASE>
<PHRASE Label="la_KWD" Module="In-Commerce" Type="1">S3V3YWl0aSBEaW5hcg==</PHRASE>
<PHRASE Label="la_KYD" Module="In-Commerce" Type="1">Q2F5bWFuIElzbGFuZHMgRG9sbGFy</PHRASE>
<PHRASE Label="la_KZT" Module="In-Commerce" Type="1">VGVuZ2U=</PHRASE>
<PHRASE Label="la_LAK" Module="In-Commerce" Type="1">S2lw</PHRASE>
<PHRASE Label="la_LBP" Module="In-Commerce" Type="1">TGViYW5lc2UgUG91bmQ=</PHRASE>
<PHRASE Label="la_lbs" Module="In-Commerce" Type="1">cG91bmRz</PHRASE>
<PHRASE Label="la_Left" Module="In-Commerce" Type="1">TGVmdA==</PHRASE>
<PHRASE Label="la_LKR" Module="In-Commerce" Type="1">U3JpIExhbmthIFJ1cGVl</PHRASE>
<PHRASE Label="la_LRD" Module="In-Commerce" Type="1">TGliZXJpYW4gRG9sbGFy</PHRASE>
<PHRASE Label="la_LSL" Module="In-Commerce" Type="1">TG90aQ==</PHRASE>
<PHRASE Label="la_LTL" Module="In-Commerce" Type="1">TGl0aHVhbmlhbiBMaXR1cw==</PHRASE>
<PHRASE Label="la_LVL" Module="In-Commerce" Type="1">TGF0dmlhbiBMYXRz</PHRASE>
<PHRASE Label="la_LYD" Module="In-Commerce" Type="1">THliaWFuIERpbmFy</PHRASE>
<PHRASE Label="la_MAD" Module="In-Commerce" Type="1">TW9yb2NjYW4gRGlyaGFt</PHRASE>
<PHRASE Label="la_Manual" Module="In-Commerce" Type="1">TWFudWFs</PHRASE>
<PHRASE Label="la_MaskProcessedCreditCards" Module="In-Commerce" Type="1">TWFzayBQcm9jZXNzZWQgQ3JlZGl0IENhcmRz</PHRASE>
<PHRASE Label="la_MaxAddresses" Module="In-Commerce" Type="1">TnVtYmVyIG9mIGFsbG93ZWQgYWRkcmVzc2Vz</PHRASE>
<PHRASE Label="la_MDL" Module="In-Commerce" Type="1">TW9sZG92YW4gTGV1</PHRASE>
<PHRASE Label="la_MGA" Module="In-Commerce" Type="1">TUdB</PHRASE>
<PHRASE Label="la_MGF" Module="In-Commerce" Type="1">TWFsYWdhc3kgRnJhbmM=</PHRASE>
<PHRASE Label="la_MKD" Module="In-Commerce" Type="1">RGVuYXI=</PHRASE>
<PHRASE Label="la_MMK" Module="In-Commerce" Type="1">S3lhdA==</PHRASE>
<PHRASE Label="la_MNT" Module="In-Commerce" Type="1">VHVncmlr</PHRASE>
<PHRASE Label="la_ModifyByValue" Module="In-Commerce" Type="1">VmFsdWU=</PHRASE>
<PHRASE Label="la_ModifyOperation" Module="In-Commerce" Type="1">T3BlcmF0aW9u</PHRASE>
<PHRASE Label="la_month" Module="In-Commerce" Type="1">bW9udGg=</PHRASE>
<PHRASE Label="la_MOP" Module="In-Commerce" Type="1">UGF0YWNh</PHRASE>
<PHRASE Label="la_MRO" Module="In-Commerce" Type="1">T3VndWl5YQ==</PHRASE>
<PHRASE Label="la_msg_ConfirmDeletePricing" Module="In-Commerce" Type="1">UGxlYXNlIGNvbmZpcm0geW91IHdhbnQgdG8gZGVsZXRlIHRoZSBQcmljaW5nIGZvciB0aGlzIFVzZXIgR3JvdXAuIENsaWNrIE9LIHRvIHByb2NlZWQgd2l0aCBkZWxldGlvbiwgb3IgY2xpY2sgQ2FuY2VsIHRvIGNhbmNlbCBpdC4=</PHRASE>
<PHRASE Label="la_MTL" Module="In-Commerce" Type="1">TWFsdGVzZSBMaXJh</PHRASE>
<PHRASE Label="la_MUR" Module="In-Commerce" Type="1">TWF1cml0aXVzIFJ1cGVl</PHRASE>
<PHRASE Label="la_MVR" Module="In-Commerce" Type="1">UnVmaXlhYQ==</PHRASE>
<PHRASE Label="la_MWK" Module="In-Commerce" Type="1">S3dhY2hh</PHRASE>
<PHRASE Label="la_MXN" Module="In-Commerce" Type="1">TWV4aWNhbiBQZXNv</PHRASE>
<PHRASE Label="la_MXV" Module="In-Commerce" Type="1">TWV4aWNhbiBVbmlkYWQgZGUgSW52ZXJzaW9uIChVREkp</PHRASE>
<PHRASE Label="la_MYR" Module="In-Commerce" Type="1">TWFsYXlzaWFuIFJpbmdnaXQ=</PHRASE>
<PHRASE Label="la_MZM" Module="In-Commerce" Type="1">TWV0aWNhbA==</PHRASE>
<PHRASE Label="la_NAD" Module="In-Commerce" Type="1">TmFtaWJpYSBEb2xsYXI=</PHRASE>
<PHRASE Label="la_NGN" Module="In-Commerce" Type="1">TmFpcmE=</PHRASE>
<PHRASE Label="la_NIO" Module="In-Commerce" Type="1">Q29yZG9iYSBPcm8=</PHRASE>
<PHRASE Label="la_NOK" Module="In-Commerce" Type="1">Tm9yd2VnaWFuIEtyb25l</PHRASE>
<PHRASE Label="la_NoShipments" Module="In-Commerce" Type="1">Tm8gU2hpcG1lbnRz</PHRASE>
<PHRASE Label="la_NotAllowed" Module="In-Commerce" Type="1">Tm90IEFsbG93ZWQ=</PHRASE>
<PHRASE Label="la_NoZonesOrBrackets" Module="In-Commerce" Type="1">WW91IG11c3QgaGF2ZSBib3RoIHpvbmVzIGFuZCBicmFja2V0cyBkZWZpbmVkIGJlZm9yZSBlZGl0aW5nIHNoaXBwaW5nIGNvc3Rz</PHRASE>
<PHRASE Label="la_NPR" Module="In-Commerce" Type="1">TmVwYWxlc2UgUnVwZWU=</PHRASE>
<PHRASE Label="la_NZD" Module="In-Commerce" Type="1">TmV3IFplYWxhbmQgRG9sbGFy</PHRASE>
<PHRASE Label="la_OMR" Module="In-Commerce" Type="1">UmlhbCBPbWFuaQ==</PHRASE>
<PHRASE Label="la_OnlineStore" Module="In-Commerce" Type="1">T25saW5lIFN0b3Jl</PHRASE>
<PHRASE Label="la_opt_AutoGroupShipments" Module="In-Commerce" Type="1">QXV0by1ncm91cCBzaGlwbWVudHM=</PHRASE>
<PHRASE Label="la_opt_Date" Module="In-Commerce" Type="1">RGF0ZQ==</PHRASE>
<PHRASE Label="la_opt_Exchange" Module="In-Commerce" Type="1">RXhjaGFuZ2U=</PHRASE>
<PHRASE Label="la_opt_Interval" Module="In-Commerce" Type="1">SW50ZXJ2YWw=</PHRASE>
<PHRASE Label="la_opt_List" Module="In-Commerce" Type="1">TGlzdGluZw==</PHRASE>
<PHRASE Label="la_opt_ManualGroupShipments" Module="In-Commerce" Type="1">R3JvdXAgc2hpcG1lbnRzIG1hbnVhbGx5</PHRASE>
<PHRASE Label="la_opt_PermanentCookie" Module="In-Commerce" Type="1">UGVybWFuZW50IENvb2tpZQ==</PHRASE>
<PHRASE Label="la_opt_PostalMail" Module="In-Commerce" Type="1">UG9zdGFsIE1haWw=</PHRASE>
<PHRASE Label="la_opt_PriceCalculationByOptimal" Module="In-Commerce" Type="1">T3B0aW1hbCBQcmljZQ==</PHRASE>
<PHRASE Label="la_opt_PriceCalculationByPrimary" Module="In-Commerce" Type="1">UHJpbWFyeSBQcmljZQ==</PHRASE>
<PHRASE Label="la_opt_Refund" Module="In-Commerce" Type="1">UmVmdW5k</PHRASE>
<PHRASE Label="la_opt_Selection" Module="In-Commerce" Type="1">U2VsZWN0aW9u</PHRASE>
<PHRASE Label="la_opt_Session" Module="In-Commerce" Type="1">U2Vzc2lvbg==</PHRASE>
<PHRASE Label="la_opt_Verified" Module="In-Commerce" Type="1">VmVyaWZpZWQ=</PHRASE>
<PHRASE Label="la_opt_Warranty" Module="In-Commerce" Type="1">V2FycmFudHk=</PHRASE>
<PHRASE Label="la_OrderMainNumberDigits" Module="In-Commerce" Type="1">T3JkZXIgbWFpbiBudW1iZXIgZGlnaXRz</PHRASE>
<PHRASE Label="la_OrderSecNumberDigits" Module="In-Commerce" Type="1">T3JkZXIgc3VibnVtYmVyIGRpZ2l0cw==</PHRASE>
<PHRASE Label="la_OrderSubtotal" Module="In-Commerce" Type="1">U3VidG90YWw=</PHRASE>
<PHRASE Label="la_orders_NextOrderNumber" Module="In-Commerce" Type="1">TmV4dCBPcmRlciBOdW1iZXI=</PHRASE>
<PHRASE Label="la_orders_RequireLogin" Module="In-Commerce" Type="1">UmVxdWlyZSBsb2dpbiBiZWZvcmUgY2hlY2tvdXQ=</PHRASE>
<PHRASE Label="la_Order_Billing_Information" Module="In-Commerce" Type="1">T3JkZXIgQmlsbGluZyBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="la_Order_Preview" Module="In-Commerce" Type="1">T3JkZXIgUHJldmlldw==</PHRASE>
<PHRASE Label="la_Overall" Module="In-Commerce" Type="1">T3ZlcmFsbA==</PHRASE>
<PHRASE Label="la_oz" Module="In-Commerce" Type="1">b3VuY2Vz</PHRASE>
<PHRASE Label="la_PAB" Module="In-Commerce" Type="1">QmFsYm9h</PHRASE>
<PHRASE Label="la_PEN" Module="In-Commerce" Type="1">TnVldm8gU29s</PHRASE>
<PHRASE Label="la_Percent" Module="In-Commerce" Type="1">UGVyY2VudA==</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliates.advanced:approve" Module="In-Commerce" Type="1">RW5hYmxlIEFmZmlsaWF0ZXM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliates.advanced:decline" Module="In-Commerce" Type="1">RGlzYWJsZSBBZmZpbGlhdGVz</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliate_payment_types.advanced:approve" Module="In-Commerce" Type="1">RW5hYmxlIEFmZmlsaWF0ZSBQYXltZW50IFR5cGU=</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliate_payment_types.advanced:decline" Module="In-Commerce" Type="1">RGlzYWJsZSBBZmZpbGlhdGUgUGF5bWVudCBUeXBl</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliate_payment_types.advanced:move_down" Module="In-Commerce" Type="1">TW92ZS1kb3duIEFmZmlsaWF0ZSBQYXltZW50IFR5cGU=</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliate_payment_types.advanced:move_up" Module="In-Commerce" Type="1">TW92ZS11cCBBZmZpbGlhdGUgUGF5bWVudCBUeXBl</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliate_payment_types.advanced:set_primary" Module="In-Commerce" Type="1">U2V0IFByaW1hcnkgQWZmaWxpYXRlIFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliate_plans.advanced:approve" Module="In-Commerce" Type="1">RW5hYmxlIEFmZmlsaWF0ZSBQbGFucw==</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliate_plans.advanced:decline" Module="In-Commerce" Type="1">RGlzYWJsZSBBZmZpbGlhdGUgUGxhbnM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:affiliate_plans.advanced:set_primary" Module="In-Commerce" Type="1">U2V0IFByaW1hcnkgQWZmaWxpYXRlIFBsYW4=</PHRASE>
<PHRASE Label="la_permission_in-commerce:coupons.advanced:approve" Module="In-Commerce" Type="1">RW5hYmxlIENvdXBvbnM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:coupons.advanced:decline" Module="In-Commerce" Type="1">RGlzYWJsZSBDb3Vwb25z</PHRASE>
<PHRASE Label="la_permission_in-commerce:currencies.advanced:move_down" Module="In-Commerce" Type="1">TW92ZS1kb3duIFByaW9yaXR5IGZvciBDdXJyZW5jeQ==</PHRASE>
<PHRASE Label="la_permission_in-commerce:currencies.advanced:move_up" Module="In-Commerce" Type="1">TW92ZS11cCBQcmlvcml0eSBmb3IgQ3VycmVuY3k=</PHRASE>
<PHRASE Label="la_permission_in-commerce:currencies.advanced:set_primary" Module="In-Commerce" Type="1">U2V0IFByaW1hcnkgQ3VycmVuY3k=</PHRASE>
<PHRASE Label="la_permission_in-commerce:currencies.advanced:update_rate" Module="In-Commerce" Type="1">VXBkYXRlIEN1cnJlbmN5IFJhdGVz</PHRASE>
<PHRASE Label="la_permission_in-commerce:discounts.advanced:approve" Module="In-Commerce" Type="1">RW5hYmxlIERpc2NvdW50cw==</PHRASE>
<PHRASE Label="la_permission_in-commerce:discounts.advanced:decline" Module="In-Commerce" Type="1">RGlzYWJsZSBEaXNjb3VudHM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:gift-certificates.advanced:approve" Module="In-Commerce" Type="1">RW5hYmxlIEdpZnQgQ2VydGlmaWNhdGVz</PHRASE>
<PHRASE Label="la_permission_in-commerce:gift-certificates.advanced:decline" Module="In-Commerce" Type="1">RGlzYWJsZSBHaWZ0IENlcnRpZmljYXRlcw==</PHRASE>
<PHRASE Label="la_permission_in-commerce:orders.advanced:approve" Module="In-Commerce" Type="1">QXBwcm92ZSBPcmRlcnM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:orders.advanced:archive" Module="In-Commerce" Type="1">QXJjaGl2ZSBPcmRlcnM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:orders.advanced:deny" Module="In-Commerce" Type="1">RGVueSBPcmRlcnM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:orders.advanced:place" Module="In-Commerce" Type="1">UGxhY2UgT3JkZXJz</PHRASE>
<PHRASE Label="la_permission_in-commerce:orders.advanced:process" Module="In-Commerce" Type="1">UHJvY2VzcyBPcmRlcnM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:orders.advanced:reset_to_pending" Module="In-Commerce" Type="1">UmVzZXQgT3JkZXJzIHRvIFBlbmRpbmc=</PHRASE>
<PHRASE Label="la_permission_in-commerce:orders.advanced:ship" Module="In-Commerce" Type="1">U2hpcCBPcmRlcnM=</PHRASE>
<PHRASE Label="la_permission_in-commerce:shipping.advanced:approve" Module="In-Commerce" Type="1">RW5hYmxlIFNoaXBwaW5nIFR5cGU=</PHRASE>
<PHRASE Label="la_permission_in-commerce:shipping.advanced:decline" Module="In-Commerce" Type="1">RGlzYWJsZSBTaGlwcGluZyBUeXBl</PHRASE>
<PHRASE Label="la_permission_in-commerce:shipping_quote_engines.advanced:approve" Module="In-Commerce" Type="1">RW5hYmxlIFNoaXBwaW5nIFF1b3RpbmcgRW5naW5lcw==</PHRASE>
<PHRASE Label="la_permission_in-commerce:shipping_quote_engines.advanced:decline" Module="In-Commerce" Type="1">RGlzYWJsZSBTaGlwcGluZyBRdW90aW5nIEVuZ2luZXM=</PHRASE>
<PHRASE Label="la_PermName_Product.Add_desc" Module="In-Commerce" Type="1">QWRkIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="la_PermName_Product.Delete_desc" Module="In-Commerce" Type="1">RGVsZXRlIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="la_PermName_Product.Modify_desc" Module="In-Commerce" Type="1">TW9kaWZ5IFByb2R1Y3Q=</PHRASE>
<PHRASE Label="la_PermName_Product.Rate_desc" Module="In-Commerce" Type="1">UmF0ZSBQcm9kdWN0</PHRASE>
<PHRASE Label="la_PermName_Product.Review_desc" Module="In-Commerce" Type="1">Q29tbWVudCBQcm9kdWN0</PHRASE>
<PHRASE Label="la_PermName_Product.Review_Pending_desc" Module="In-Commerce" Type="1">Q29tbWVudCBQcm9kdWN0IFBlbmRpbmc=</PHRASE>
<PHRASE Label="la_PermName_Product.View_desc" Module="In-Commerce" Type="1">VmlldyBQcm9kdWN0</PHRASE>
<PHRASE Label="la_Perpage_Manufacturers" Module="In-Commerce" Type="1">TWFudWZhY3R1cmVycyBwZXIgcGFnZQ==</PHRASE>
<PHRASE Label="la_Perpage_Manufacturers_Short" Module="In-Commerce" Type="1">TWFudWZhY3R1cmVycyBwZXIgcGFnZSBvbiBhIHNob3J0IGxpc3Rpbmc=</PHRASE>
<PHRASE Label="la_Perpage_Products" Module="In-Commerce" Type="1">TnVtYmVyIG9mIHByb2R1Y3RzIHBlciBwYWdl</PHRASE>
<PHRASE Label="la_Perpage_Products_Shortlist" Module="In-Commerce" Type="1">TnVtYmVyIG9mIHByb2R1Y3RzIHBlciBwYWdlIG9uIGEgc2hvcnQgbGlzdGluZw==</PHRASE>
<PHRASE Label="la_PerUnit" Module="In-Commerce" Type="1">UGVyIFVuaXQ=</PHRASE>
<PHRASE Label="la_PGK" Module="In-Commerce" Type="1">S2luYQ==</PHRASE>
<PHRASE Label="la_PHP" Module="In-Commerce" Type="1">UGhpbGlwcGluZSBQZXNv</PHRASE>
<PHRASE Label="la_PKR" Module="In-Commerce" Type="1">UGFraXN0YW4gUnVwZWU=</PHRASE>
<PHRASE Label="la_PLN" Module="In-Commerce" Type="1">WmxvdHk=</PHRASE>
<PHRASE Label="la_Precision" Module="In-Commerce" Type="1">UHJlY2lzaW9u</PHRASE>
<PHRASE Label="la_prefix_ord" Module="In-Commerce" Type="1">T3JkZXI=</PHRASE>
<PHRASE Label="la_ProcessBackorderingAuto" Module="In-Commerce" Type="1">UHJvY2VzcyBiYWNrb3JkZXJzIGF1dG9tYXRpY2FsbHk=</PHRASE>
<PHRASE Label="la_Processed" Module="In-Commerce" Type="1">UHJvY2Vzc2Vk</PHRASE>
<PHRASE Label="la_ProcessingFee" Module="In-Commerce" Type="1">UHJvY2Vzc2luZyBGZWU=</PHRASE>
<PHRASE Label="la_Product" Module="In-Commerce" Type="1">UHJvZHVjdA==</PHRASE>
<PHRASE Label="la_ProductDeleted" Module="In-Commerce" Type="1">UHJvZHVjdCBEZWxldGVk</PHRASE>
<PHRASE Label="la_product_downloadable" Module="In-Commerce" Type="1">RG93bmxvYWRhYmxl</PHRASE>
<PHRASE Label="la_product_package" Module="In-Commerce" Type="1">UGFja2FnZQ==</PHRASE>
<PHRASE Label="la_product_service" Module="In-Commerce" Type="1">U2VydmljZQ==</PHRASE>
<PHRASE Label="la_product_subscription" Module="In-Commerce" Type="1">U3Vic2NyaXB0aW9u</PHRASE>
<PHRASE Label="la_product_tangible" Module="In-Commerce" Type="1">VGFuZ2libGU=</PHRASE>
<PHRASE Label="la_prompt_affiliate_cookie_duration" Module="In-Commerce" Type="1">QWZmaWxpYXRlIENvb2tpZSBEdXJhdGlvbiAoaW4gZGF5cyk=</PHRASE>
<PHRASE Label="la_prompt_affiliate_group" Module="In-Commerce" Type="1">QWZmaWxpYXRlIEdyb3Vw</PHRASE>
<PHRASE Label="la_prompt_affiliate_storage_method" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFN0b3JhZ2UgTWV0aG9k</PHRASE>
<PHRASE Label="la_prompt_Multilingual" Module="In-Commerce" Type="1">TXVsdGlsaW5ndWFs</PHRASE>
<PHRASE Label="la_prompt_PriceBracketCalculation" Module="In-Commerce" Type="1">Q2FsY3VsYXRlIFByaWNpbmcgYnk=</PHRASE>
<PHRASE Label="la_prompt_register_as_affiliate" Module="In-Commerce" Type="1">QWxsb3cgcmVnaXN0cmF0aW9uIGFzIGFmZmlsaWF0ZQ==</PHRASE>
<PHRASE Label="la_PropagateValues" Module="In-Commerce" Type="1">UHJvcGFnYXRlIFZhbHVlcw==</PHRASE>
<PHRASE Label="la_PYG" Module="In-Commerce" Type="1">R3VhcmFuaQ==</PHRASE>
<PHRASE Label="la_QAR" Module="In-Commerce" Type="1">UWF0YXJpIFJpYWw=</PHRASE>
<PHRASE Label="la_quartely" Module="In-Commerce" Type="1">cXVhcnRlcg==</PHRASE>
<PHRASE Label="la_RecalculateOrder" Module="In-Commerce" Type="1">UmVjYWxjdWxhdGUgT3JkZXI=</PHRASE>
<PHRASE Label="la_RecurringChargeInverval" Module="In-Commerce" Type="1">Q2hhcmdlIFJlY3VycmluZyBPcmRlcnMgKGRheXMgaW4gYWR2YW5jZSk=</PHRASE>
<PHRASE Label="la_RecurringOrderDenied" Module="In-Commerce" Type="1">UmVjdXJyaW5nIE9yZGVyIERlbmllZA==</PHRASE>
<PHRASE Label="la_RecurringOrderProcessed" Module="In-Commerce" Type="1">UmVjdXJyaW5nIE9yZGVyIFByb2Nlc3NlZA==</PHRASE>
<PHRASE Label="la_ResetBackorderFlag" Module="In-Commerce" Type="1">UmVzZXQgYmFja29yZGVyIGZsYWcgYXV0b21hdGljYWxseSB3aGVuIEF2YWlsYWJsZSBxdWFudGl0eSBpcyBlcXVhbCB0bywgb3IgYWJvdmU=</PHRASE>
<PHRASE Label="la_reset_to_base" Module="In-Commerce" Type="1">UmVzZXQgVG8gQmFzZQ==</PHRASE>
<PHRASE Label="la_Right" Module="In-Commerce" Type="1">UmlnaHQ=</PHRASE>
<PHRASE Label="la_ROL" Module="In-Commerce" Type="1">TGV1</PHRASE>
<PHRASE Label="la_RUB" Module="In-Commerce" Type="1">UnVzc2lhbiBSdWJsZQ==</PHRASE>
<PHRASE Label="la_RUR" Module="In-Commerce" Type="1">UnVzc2lhbiBSdWJsZQ==</PHRASE>
<PHRASE Label="la_RWF" Module="In-Commerce" Type="1">UndhbmRhIEZyYW5j</PHRASE>
<PHRASE Label="la_SAR" Module="In-Commerce" Type="1">U2F1ZGkgUml5YWw=</PHRASE>
<PHRASE Label="la_SBD" Module="In-Commerce" Type="1">U29sb21vbiBJc2xhbmRzIERvbGxhcg==</PHRASE>
<PHRASE Label="la_SCR" Module="In-Commerce" Type="1">U2V5Y2hlbGxlcyBSdXBlZQ==</PHRASE>
<PHRASE Label="la_SDD" Module="In-Commerce" Type="1">U3VkYW5lc2UgRGluYXI=</PHRASE>
<PHRASE Label="la_section_AdvertisingMaterials" Module="In-Commerce" Type="1">QWR2ZXJ0aXNpbmcgTWF0ZXJpYWxz</PHRASE>
<PHRASE Label="la_section_Affiliate" Module="In-Commerce" Type="1">QWZmaWxpYXRl</PHRASE>
<PHRASE Label="la_section_Backordering" Module="In-Commerce" Type="1">QmFja29yZGVyaW5n</PHRASE>
<PHRASE Label="la_section_Comments" Module="In-Commerce" Type="1">Q29tbWVudHM=</PHRASE>
<PHRASE Label="la_section_CreditCard" Module="In-Commerce" Type="1">Q3JlZGl0IENhcmQ=</PHRASE>
<PHRASE Label="la_section_Currency" Module="In-Commerce" Type="1">Q3VycmVuY3k=</PHRASE>
<PHRASE Label="la_section_EmailDelivery" Module="In-Commerce" Type="1">U2VuZCB2aWEgRS1tYWlsIHRv</PHRASE>
<PHRASE Label="la_section_File" Module="In-Commerce" Type="1">RmlsZQ==</PHRASE>
<PHRASE Label="la_section_Files" Module="In-Commerce" Type="1">RmlsZXM=</PHRASE>
<PHRASE Label="la_section_help_file_missing" Module="In-Commerce" Type="1">IFRoaXMgaGVscCBzZWN0aW9uIGRvZXMgbm90IHlldCBleGlzdCwgaXQncyBjb21pbmcgc29vbiE=</PHRASE>
<PHRASE Label="la_section_OrderBilling" Module="In-Commerce" Type="1">QmlsbGluZyBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="la_section_OrderShipping" Module="In-Commerce" Type="1">U2hpcHBpbmcgSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="la_section_PostalDelivery" Module="In-Commerce" Type="1">U2VuZCB2aWEgUG9zdGFsIE1haWwgdG8=</PHRASE>
<PHRASE Label="la_section_PriceBracket" Module="In-Commerce" Type="1">UHJpY2UgQnJhY2tldA==</PHRASE>
<PHRASE Label="la_section_Product" Module="In-Commerce" Type="1">UHJvZHVjdA==</PHRASE>
<PHRASE Label="la_section_ShippingCosts" Module="In-Commerce" Type="1">U2hpcHBpbmcgQ29zdHM=</PHRASE>
<PHRASE Label="la_section_ShippingZone" Module="In-Commerce" Type="1">U2hpcHBpbmcgWm9uZQ==</PHRASE>
<PHRASE Label="la_section_Statistics" Module="In-Commerce" Type="1">U3RhdGlzdGljcw==</PHRASE>
<PHRASE Label="la_section_StoreSettings" Module="In-Commerce" Type="1">U3RvcmUgU2V0dGluZ3M=</PHRASE>
<PHRASE Label="la_section_TaxZone" Module="In-Commerce" Type="1">VGF4IFpvbmU=</PHRASE>
<PHRASE Label="la_SEK" Module="In-Commerce" Type="1">U3dlZGlzaCBLcm9uYQ==</PHRASE>
<PHRASE Label="la_SelectedOnly" Module="In-Commerce" Type="1">U2VsZWN0ZWQgUHJvZHVjdHMgT25seQ==</PHRASE>
<PHRASE Label="la_SetBackorderFlag" Module="In-Commerce" Type="1">U2V0IGJhY2tvcmRlciBmbGFnIGF1dG9tYXRpY2FsbHkgd2hlbiBBdmFpbGFibGUgcXVhbnRpdHkgaXMgZXF1YWwgdG8=</PHRASE>
<PHRASE Label="la_SGD" Module="In-Commerce" Type="1">U2luZ2Fwb3JlIERvbGxhcg==</PHRASE>
<PHRASE Label="la_ShippingHandling" Module="In-Commerce" Type="1">U2hpcHBpbmcgYW5kIEhhbmRsaW5n</PHRASE>
<PHRASE Label="la_ShippingId" Module="In-Commerce" Type="1">SUQ=</PHRASE>
<PHRASE Label="la_shipping_AnyAndSelected" Module="In-Commerce" Type="1">QW55ICsgU2VsZWN0ZWQ=</PHRASE>
<PHRASE Label="la_Shipping_Code" Module="In-Commerce" Type="1">U2hpcHBpbmcgQ29kZQ==</PHRASE>
<PHRASE Label="la_Shipping_From_Location" Module="In-Commerce" Type="1">RnJvbSBMb2NhdGlvbg==</PHRASE>
<PHRASE Label="la_shipping_Limited" Module="In-Commerce" Type="1">U2VsZWN0ZWQgT25seQ==</PHRASE>
<PHRASE Label="la_Shipping_Name" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_Shipping_Type" Module="In-Commerce" Type="1">VHlwZQ==</PHRASE>
<PHRASE Label="la_ship_All_Together" Module="In-Commerce" Type="1">U2hpcCBhbGwgaXRlbXMgdG9nZXRoZXI=</PHRASE>
<PHRASE Label="la_ship_Backorders_Upon_Avail" Module="In-Commerce" Type="1">U2hpcCBiYWNrb3JkZXJzIHVwb24gYXZhaWxhYmxl</PHRASE>
<PHRASE Label="la_ship_Backorder_Separately" Module="In-Commerce" Type="1">U2hpcCBiYWNrb3JkZXJlZCBpdGVtcyBzZXBhcmF0ZWx5</PHRASE>
<PHRASE Label="la_SHP" Module="In-Commerce" Type="1">U2FpbnQgSGVsZW5hIFBvdW5k</PHRASE>
<PHRASE Label="la_SIT" Module="In-Commerce" Type="1">VG9sYXI=</PHRASE>
<PHRASE Label="la_SKK" Module="In-Commerce" Type="1">U2xvdmFrIEtvcnVuYQ==</PHRASE>
<PHRASE Label="la_SLL" Module="In-Commerce" Type="1">TGVvbmU=</PHRASE>
<PHRASE Label="la_SOS" Module="In-Commerce" Type="1">U29tYWxpIFNoaWxsaW5n</PHRASE>
<PHRASE Label="la_Speed_Code" Module="In-Commerce" Type="1">U3BlZWQgQ29kZQ==</PHRASE>
<PHRASE Label="la_SRD" Module="In-Commerce" Type="1">U1JE</PHRASE>
<PHRASE Label="la_SRG" Module="In-Commerce" Type="1">U3VyaW5hbWUgR3VpbGRlcg==</PHRASE>
<PHRASE Label="la_StartingOrderNumber" Module="In-Commerce" Type="1">U3RhcnRpbmcgb3JkZXIgbnVtYmVy</PHRASE>
<PHRASE Label="la_State" Module="In-Commerce" Type="1">U3RhdGU=</PHRASE>
<PHRASE Label="la_STD" Module="In-Commerce" Type="1">RG9icmE=</PHRASE>
<PHRASE Label="la_StoreName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_SubTotal" Module="In-Commerce" Type="1">U3VidG90YWw=</PHRASE>
<PHRASE Label="la_SVC" Module="In-Commerce" Type="1">RWwgU2FsdmFkb3IgQ29sb24=</PHRASE>
<PHRASE Label="la_SYP" Module="In-Commerce" Type="1">U3lyaWFuIFBvdW5k</PHRASE>
<PHRASE Label="la_SZL" Module="In-Commerce" Type="1">TGlsYW5nZW5p</PHRASE>
<PHRASE Label="la_tab_Access" Module="In-Commerce" Type="1">QWNjZXNz</PHRASE>
<PHRASE Label="la_tab_AccessAndPricing" Module="In-Commerce" Type="1">QWNjZXNzICYgUHJpY2luZw==</PHRASE>
<PHRASE Label="la_tab_AffiliatePaymentTypes" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFBheW1lbnQgVHlwZXM=</PHRASE>
<PHRASE Label="la_tab_AffiliatePlans" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFBsYW5z</PHRASE>
<PHRASE Label="la_tab_Affiliates" Module="In-Commerce" Type="1">QWZmaWxpYXRlcw==</PHRASE>
<PHRASE Label="la_tab_Archived" Module="In-Commerce" Type="1">QXJjaGl2ZWQ=</PHRASE>
<PHRASE Label="la_tab_Backorders" Module="In-Commerce" Type="1">QmFja29yZGVycw==</PHRASE>
<PHRASE Label="la_tab_Billing" Module="In-Commerce" Type="1">QmlsbGluZw==</PHRASE>
<PHRASE Label="la_tab_Brackets" Module="In-Commerce" Type="1">QnJhY2tldHM=</PHRASE>
<PHRASE Label="la_tab_ConfigContacts" Module="In-Commerce" Type="1">Q29udGFjdCBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="la_tab_Costs" Module="In-Commerce" Type="1">Q29zdHM=</PHRASE>
<PHRASE Label="la_tab_Coupons" Module="In-Commerce" Type="1">Q291cG9ucw==</PHRASE>
<PHRASE Label="la_tab_CouponsItems" Module="In-Commerce" Type="1">SXRlbXM=</PHRASE>
<PHRASE Label="la_tab_Currencies" Module="In-Commerce" Type="1">Q3VycmVuY2llcw==</PHRASE>
<PHRASE Label="la_tab_CustomShippingTypes" Module="In-Commerce" Type="1">Q3VzdG9tIFNoaXBwaW5nIFR5cGVz</PHRASE>
<PHRASE Label="la_tab_Denied" Module="In-Commerce" Type="1">RGVuaWVk</PHRASE>
<PHRASE Label="la_tab_DiscountItems" Module="In-Commerce" Type="1">SXRlbXM=</PHRASE>
<PHRASE Label="la_tab_Discounts" Module="In-Commerce" Type="1">RGlzY291bnRz</PHRASE>
<PHRASE Label="la_tab_DiscountsAndCoupons" Module="In-Commerce" Type="1">RGlzY291bnRzICYgQ2VydGlmaWNhdGVz</PHRASE>
<PHRASE Label="la_tab_DownloadLog" Module="In-Commerce" Type="1">RG93bmxvYWQgTG9n</PHRASE>
<PHRASE Label="la_tab_Editing_Shipping_type" Module="In-Commerce" Type="1">RWRpdGluZyBTaGlwcGluZyB0eXBl</PHRASE>
<PHRASE Label="la_tab_FilesAndPricing" Module="In-Commerce" Type="1">RmlsZXMgJiBQcmljaW5n</PHRASE>
<PHRASE Label="la_tab_Gateway" Module="In-Commerce" Type="1">R2F0ZXdheQ==</PHRASE>
<PHRASE Label="la_tab_GiftCertificates" Module="In-Commerce" Type="1">R2lmdCBDZXJ0aWZpY2F0ZXM=</PHRASE>
<PHRASE Label="la_tab_Incomplete" Module="In-Commerce" Type="1">SW5jb21wbGV0ZQ==</PHRASE>
<PHRASE Label="la_tab_Inventory" Module="In-Commerce" Type="1">SW52ZW50b3J5</PHRASE>
<PHRASE Label="la_tab_Manufacturers" Module="In-Commerce" Type="1">TWFudWZhY3R1cmVycw==</PHRASE>
<PHRASE Label="la_tab_NewRegional" Module="In-Commerce" Type="1">TkVXIFJlZ2lvbmFs</PHRASE>
<PHRASE Label="la_tab_Options" Module="In-Commerce" Type="1">T3B0aW9ucw==</PHRASE>
<PHRASE Label="la_tab_Orders" Module="In-Commerce" Type="1">T3JkZXJz</PHRASE>
<PHRASE Label="la_tab_PaymentLog" Module="In-Commerce" Type="1">VHJhbnNhY3Rpb25z</PHRASE>
<PHRASE Label="la_tab_Payments" Module="In-Commerce" Type="1">UGF5bWVudHM=</PHRASE>
<PHRASE Label="la_tab_PaymentTypes" Module="In-Commerce" Type="1">UGF5bWVudCBUeXBlcw==</PHRASE>
<PHRASE Label="la_tab_Pending" Module="In-Commerce" Type="1">UGVuZGluZw==</PHRASE>
<PHRASE Label="la_tab_Preview" Module="In-Commerce" Type="1">UHJldmlldw==</PHRASE>
<PHRASE Label="la_tab_Pricing" Module="In-Commerce" Type="1">UHJpY2luZw==</PHRASE>
<PHRASE Label="la_tab_Processed" Module="In-Commerce" Type="1">UHJvY2Vzc2Vk</PHRASE>
<PHRASE Label="la_tab_Products" Module="In-Commerce" Type="1">UHJvZHVjdHM=</PHRASE>
<PHRASE Label="la_tab_Returns" Module="In-Commerce" Type="1">UmV0dXJuZWQ=</PHRASE>
<PHRASE Label="la_tab_SaleReports" Module="In-Commerce" Type="1">U2FsZXMgUmVwb3J0</PHRASE>
<PHRASE Label="la_tab_Shipping" Module="In-Commerce" Type="1">U2hpcHBpbmc=</PHRASE>
<PHRASE Label="la_tab_ShippingQuoteEngines" Module="In-Commerce" Type="1">U2hpcHBpbmcgUXVvdGUgRW5naW5lcw==</PHRASE>
<PHRASE Label="la_tab_ShippingZones" Module="In-Commerce" Type="1">U2hpcHBpbmcgWm9uZXM=</PHRASE>
<PHRASE Label="la_tab_Shipping_Types" Module="In-Commerce" Type="1">RWRpdGluZyBTaGlwcGluZyBUeXBlcw==</PHRASE>
<PHRASE Label="la_tab_Taxes" Module="In-Commerce" Type="1">VGF4ZXM=</PHRASE>
<PHRASE Label="la_tab_ToShip" Module="In-Commerce" Type="1">VG8gU2hpcA==</PHRASE>
<PHRASE Label="la_tab_UserGroups" Module="In-Commerce" Type="1">VXNlciBHcm91cHM=</PHRASE>
<PHRASE Label="la_text_Additional" Module="In-Commerce" Type="1">QWRkaXRpb25hbA==</PHRASE>
<PHRASE Label="la_Text_Affiliates" Module="In-Commerce" Type="1">QWZmaWxpYXRlcw==</PHRASE>
<PHRASE Label="la_Text_Carriers" Module="In-Commerce" Type="1">Q2FycmllcnM=</PHRASE>
<PHRASE Label="la_Text_Combination" Module="In-Commerce" Type="1">Q29tYmluYXRpb24=</PHRASE>
<PHRASE Label="la_text_CompanyName" Module="In-Commerce" Type="1">Q29tcGFueSBOYW1l</PHRASE>
<PHRASE Label="la_text_ContactName" Module="In-Commerce" Type="1">Q29udGFjdCBOYW1l</PHRASE>
<PHRASE Label="la_Text_ContactsGeneral" Module="In-Commerce" Type="1">R2VuZXJhbCBjb250YWN0IGluZm9ybWF0aW9u</PHRASE>
<PHRASE Label="la_Text_Coupons" Module="In-Commerce" Type="1">Q291cG9ucw==</PHRASE>
<PHRASE Label="la_Text_Currencies" Module="In-Commerce" Type="1">Q3VycmVuY2llcw==</PHRASE>
<PHRASE Label="la_Text_Delivery" Module="In-Commerce" Type="1">RGVsaXZlcnk=</PHRASE>
<PHRASE Label="la_text_Fax" Module="In-Commerce" Type="1">RmF4</PHRASE>
<PHRASE Label="la_Text_Manufacturers" Module="In-Commerce" Type="1">TWFudWZhY3R1cmVycw==</PHRASE>
<PHRASE Label="la_Text_Option" Module="In-Commerce" Type="1">T3B0aW9u</PHRASE>
<PHRASE Label="la_Text_Orders" Module="In-Commerce" Type="1">T3JkZXJz</PHRASE>
<PHRASE Label="la_Text_Other" Module="In-Commerce" Type="1">T3RoZXI=</PHRASE>
<PHRASE Label="la_text_Others" Module="In-Commerce" Type="1">T3RoZXJz</PHRASE>
<PHRASE Label="la_Text_PricingCalculation" Module="In-Commerce" Type="1">UHJpY2UgQnJha2V0IENhbGN1bGF0aW9u</PHRASE>
<PHRASE Label="la_text_Product" Module="In-Commerce" Type="1">UHJvZHVjdA==</PHRASE>
<PHRASE Label="la_Text_Products" Module="In-Commerce" Type="1">UHJvZHVjdHM=</PHRASE>
<PHRASE Label="la_Text_Properties" Module="In-Commerce" Type="1">UHJvcGVydGllcw==</PHRASE>
<PHRASE Label="la_text_ReportByTopProductCategories" Module="In-Commerce" Type="1">UHJvZHVjdCBDYXRlZ29yaWVzIGJ5</PHRASE>
<PHRASE Label="la_text_ReportByTopProducts" Module="In-Commerce" Type="1">UHJvZHVjdHMgYnk=</PHRASE>
<PHRASE Label="la_Text_ShippingAddress" Module="In-Commerce" Type="1">U2hpcHBpbmcgRnJvbSBhZGRyZXNz</PHRASE>
<PHRASE Label="la_Text_Shipping_Type" Module="In-Commerce" Type="1">U2hpcHBpbmcgVHlwZQ==</PHRASE>
<PHRASE Label="la_Text_StoreAddress" Module="In-Commerce" Type="1">Q29udGFjdCBBZGRyZXNz</PHRASE>
<PHRASE Label="la_text_StoreName" Module="In-Commerce" Type="1">U3RvcmUgTmFtZQ==</PHRASE>
<PHRASE Label="la_Text_TopSellers" Module="In-Commerce" Type="1">VG9wIHNlbGxlcnM=</PHRASE>
<PHRASE Label="la_THB" Module="In-Commerce" Type="1">QmFodA==</PHRASE>
<PHRASE Label="la_title_AddingCurrency" Module="In-Commerce" Type="1">QWRkaW5nIEN1cnJlbmN5</PHRASE>
<PHRASE Label="la_title_AddingGiftCertificate" Module="In-Commerce" Type="1">QWRkaW5nIEdpZnQgQ2VydGlmaWNhdGU=</PHRASE>
<PHRASE Label="la_title_AddingManufacturer" Module="In-Commerce" Type="1">QWRkaW5nIG1hbnVmYWN0dXJlcg==</PHRASE>
<PHRASE Label="la_title_AddingPaymentType" Module="In-Commerce" Type="1">QWRkaW5nIFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="la_title_AddingShippingType" Module="In-Commerce" Type="1">QWRkaW5nIFNoaXBwaW5nIFR5cGU=</PHRASE>
<PHRASE Label="la_title_AddingShippingZone" Module="In-Commerce" Type="1">QWRkaW5nIFNoaXBwaW5nIFpvbmU=</PHRASE>
<PHRASE Label="la_title_AddingTaxZone" Module="In-Commerce" Type="1">QWRkaW5nIFRheCBab25l</PHRASE>
<PHRASE Label="la_title_Adding_Affiliate" Module="In-Commerce" Type="1">QWRkaW5nIEFmZmlsaWF0ZQ==</PHRASE>
<PHRASE Label="la_title_Adding_Affiliate_Payment_Type" Module="In-Commerce" Type="1">QWRkaW5nIEFmZmlsaWF0ZSBQYXltZW50IFR5cGU=</PHRASE>
<PHRASE Label="la_title_Adding_Affiliate_Plan" Module="In-Commerce" Type="1">QWRkaW5nIEFmZmlsaWF0ZSBQbGFu</PHRASE>
<PHRASE Label="la_title_Adding_Coupon" Module="In-Commerce" Type="1">QWRkaW5nIENvdXBvbg==</PHRASE>
<PHRASE Label="la_title_Adding_Discount" Module="In-Commerce" Type="1">QWRkaW5nIERpc2NvdW50</PHRASE>
<PHRASE Label="la_title_Adding_File" Module="In-Commerce" Type="1">QWRkaW5nIEZpbGU=</PHRASE>
<PHRASE Label="la_title_Adding_Option" Module="In-Commerce" Type="1">QWRkaW5nIE9wdGlvbg==</PHRASE>
<PHRASE Label="la_title_Adding_Order" Module="In-Commerce" Type="1">QWRkaW5nIE9yZGVy</PHRASE>
<PHRASE Label="la_title_Adding_PriceBracket" Module="In-Commerce" Type="1">QWRkaW5nIFByaWNlIEJyYWNrZXQ=</PHRASE>
<PHRASE Label="la_title_Adding_Product" Module="In-Commerce" Type="1">QWRkaW5nIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="la_title_AffiliatePayments" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFBheW1lbnRz</PHRASE>
<PHRASE Label="la_title_AffiliatePaymentTypes" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFBheW1lbnQgVHlwZXM=</PHRASE>
<PHRASE Label="la_title_AffiliatePlans" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFBsYW5z</PHRASE>
<PHRASE Label="la_title_AffiliatePlansBrackets" Module="In-Commerce" Type="1">QnJhY2tldHM=</PHRASE>
<PHRASE Label="la_title_Affiliates" Module="In-Commerce" Type="1">QWZmaWxpYXRlcw==</PHRASE>
<PHRASE Label="la_title_ApplyModifier" Module="In-Commerce" Type="1">QXBwbHkgTW9kaWZpZXI=</PHRASE>
<PHRASE Label="la_title_BackOrders" Module="In-Commerce" Type="1">QmFja29yZGVycyBMaXN0</PHRASE>
<PHRASE Label="la_title_Brackets" Module="In-Commerce" Type="1">QnJhY2tldHM=</PHRASE>
<PHRASE Label="la_title_Costs" Module="In-Commerce" Type="1">Q29zdHM=</PHRASE>
<PHRASE Label="la_title_CouponItems" Module="In-Commerce" Type="1">Q291cG9uIEl0ZW1z</PHRASE>
<PHRASE Label="la_title_Coupons" Module="In-Commerce" Type="1">Q291cG9ucw==</PHRASE>
<PHRASE Label="la_title_CouponSelector" Module="In-Commerce" Type="1">Q291cG9uIFNlbGVjdG9y</PHRASE>
<PHRASE Label="la_title_Currencies" Module="In-Commerce" Type="1">Q3VycmVuY2llcw==</PHRASE>
<PHRASE Label="la_title_DiscountItems" Module="In-Commerce" Type="1">RGlzY291bnQgSXRlbXM=</PHRASE>
<PHRASE Label="la_title_Discounts" Module="In-Commerce" Type="1">RGlzY291bnRz</PHRASE>
<PHRASE Label="la_title_EditingCurrency" Module="In-Commerce" Type="1">RWRpdGluZyBDdXJyZW5jeQ==</PHRASE>
<PHRASE Label="la_title_EditingGiftCertificate" Module="In-Commerce" Type="1">RWRpdGluZyBHaWZ0IENlcnRpZmljYXRl</PHRASE>
<PHRASE Label="la_title_EditingManufacturer" Module="In-Commerce" Type="1">RWRpdGluZyBNYW51ZmFjdHVyZXI=</PHRASE>
<PHRASE Label="la_title_EditingPaymentType" Module="In-Commerce" Type="1">RWRpdGluZyBQYXltZW50IFR5cGU=</PHRASE>
<PHRASE Label="la_title_EditingShippingQuoteEngine" Module="In-Commerce" Type="1">RWRpdGluZyBTaGlwcGluZyBRdW90ZSBFbmdpbmU=</PHRASE>
<PHRASE Label="la_title_EditingShippingType" Module="In-Commerce" Type="1">RWRpdGluZyBTaGlwcGluZyBUeXBl</PHRASE>
<PHRASE Label="la_title_EditingShippingZone" Module="In-Commerce" Type="1">RWRpdGluZyBTaGlwcGluZyBab25l</PHRASE>
<PHRASE Label="la_title_EditingTaxZone" Module="In-Commerce" Type="1">RWRpdGluZyBUYXggWm9uZQ==</PHRASE>
<PHRASE Label="la_title_Editing_Affiliate" Module="In-Commerce" Type="1">RWRpdGluZyBBZmZpbGlhdGU=</PHRASE>
<PHRASE Label="la_title_Editing_Affiliate_Payment_Type" Module="In-Commerce" Type="1">RWRpdGluZyBBZmZpbGlhdGUgUGF5bWVudCBUeXBl</PHRASE>
<PHRASE Label="la_title_Editing_Affiliate_Plan" Module="In-Commerce" Type="1">RWRpdGluZyBBZmZpbGlhdGUgUGxhbg==</PHRASE>
<PHRASE Label="la_title_Editing_Coupon" Module="In-Commerce" Type="1">RWRpdGluZyBDb3Vwb24=</PHRASE>
<PHRASE Label="la_title_Editing_Discount" Module="In-Commerce" Type="1">RWRpdGluZyBEaXNjb3VudA==</PHRASE>
<PHRASE Label="la_title_Editing_File" Module="In-Commerce" Type="1">RWRpdGluZyBGaWxl</PHRASE>
<PHRASE Label="la_title_Editing_Option" Module="In-Commerce" Type="1">RWRpdGluZyBPcHRpb24=</PHRASE>
<PHRASE Label="la_title_Editing_Order" Module="In-Commerce" Type="1">RWRpdGluZyBPcmRlcg==</PHRASE>
<PHRASE Label="la_title_Editing_Order_Item" Module="In-Commerce" Type="1">RWRpdGluZyBPcmRlciBJdGVt</PHRASE>
<PHRASE Label="la_title_Editing_PriceBracket" Module="In-Commerce" Type="1">RWRpdGluZyBQcmljZSBCcmFja2V0</PHRASE>
<PHRASE Label="la_title_Editing_Product" Module="In-Commerce" Type="1">RWRpdGluZyBQcm9kdWN0</PHRASE>
<PHRASE Label="la_title_FileDownloads" Module="In-Commerce" Type="1">RmlsZSBEb3dubG9hZHM=</PHRASE>
<PHRASE Label="la_title_Gateway" Module="In-Commerce" Type="1">R2F0ZXdheQ==</PHRASE>
<PHRASE Label="la_title_GiftCertificates" Module="In-Commerce" Type="1">R2lmdCBDZXJ0aWZpY2F0ZXM=</PHRASE>
<PHRASE Label="la_title_ImportProducts" Module="In-Commerce" Type="1">SW1wb3J0IFByb2R1Y3Rz</PHRASE>
<PHRASE Label="la_title_In-Commerce" Module="In-Commerce" Type="1">RS1jb21tZXJjZQ==</PHRASE>
<PHRASE Label="la_title_IncompleteOrders" Module="In-Commerce" Type="1">SW5jb21wbGV0ZSBPcmRlcnMgTGlzdA==</PHRASE>
<PHRASE Label="la_title_ManagingOptionCombinations" Module="In-Commerce" Type="1">TWFuYWdpbmcgT3B0aW9uIENvbWJpbmF0aW9ucw==</PHRASE>
<PHRASE Label="la_title_ManagingShippingOptions" Module="In-Commerce" Type="1">TWFuYWdlIFNoaXBwaW5nIFR5cGVz</PHRASE>
<PHRASE Label="la_title_Manufacturers" Module="In-Commerce" Type="1">TWFudWZhY3R1cmVycw==</PHRASE>
<PHRASE Label="la_title_NewCurrency" Module="In-Commerce" Type="1">TmV3IEN1cnJlbmN5</PHRASE>
<PHRASE Label="la_title_NewGiftCertificate" Module="In-Commerce" Type="1">TmV3IEdpZnQgQ2VydGlmaWNhdGU=</PHRASE>
<PHRASE Label="la_title_NewManufacturer" Module="In-Commerce" Type="1">TmV3IG1hbnVmYWN0dXJlcg==</PHRASE>
<PHRASE Label="la_title_NewPaymentType" Module="In-Commerce" Type="1">TmV3IFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="la_title_NewProduct" Module="In-Commerce" Type="1">TmV3IFByb2R1Y3Q=</PHRASE>
<PHRASE Label="la_title_NewShippingType" Module="In-Commerce" Type="1">TmV3IFNoaXBwaW5nIFR5cGU=</PHRASE>
<PHRASE Label="la_title_NewShippingZone" Module="In-Commerce" Type="1">TmV3IFNoaXBwaW5nIFpvbmU=</PHRASE>
<PHRASE Label="la_title_NewTax" Module="In-Commerce" Type="1">TmV3IFRheCBab25l</PHRASE>
<PHRASE Label="la_title_New_Affiliate" Module="In-Commerce" Type="1">TmV3IEFmZmlsaWF0ZQ==</PHRASE>
<PHRASE Label="la_title_New_Affiliate_Payment_Type" Module="In-Commerce" Type="1">TmV3IEFmZmlsaWF0ZSBQYXltZW50IFR5cGU=</PHRASE>
<PHRASE Label="la_title_New_Affiliate_Plan" Module="In-Commerce" Type="1">TmV3IEFmZmlsaWF0ZSBQbGFu</PHRASE>
<PHRASE Label="la_title_New_Coupon" Module="In-Commerce" Type="1">TmV3IENvdXBvbg==</PHRASE>
<PHRASE Label="la_title_New_Discount" Module="In-Commerce" Type="1">TmV3IERpc2NvdW50</PHRASE>
<PHRASE Label="la_title_New_File" Module="In-Commerce" Type="1">TmV3IEZpbGU=</PHRASE>
<PHRASE Label="la_title_New_Option" Module="In-Commerce" Type="1">TmV3IE9wdGlvbg==</PHRASE>
<PHRASE Label="la_title_New_Order" Module="In-Commerce" Type="1">TmV3IE9yZGVy</PHRASE>
<PHRASE Label="la_title_New_PriceBracket" Module="In-Commerce" Type="1">TmV3IFByaWNlIEJyYWNrZXQ=</PHRASE>
<PHRASE Label="la_title_OrderBilling" Module="In-Commerce" Type="1">QmlsbGluZw==</PHRASE>
<PHRASE Label="la_title_OrderGWResult" Module="In-Commerce" Type="1">VHJhbnNhY3Rpb24gRGV0YWlscw==</PHRASE>
<PHRASE Label="la_title_OrderItems" Module="In-Commerce" Type="1">SXRlbXM=</PHRASE>
<PHRASE Label="la_title_OrderPreview" Module="In-Commerce" Type="1">UHJldmlldw==</PHRASE>
<PHRASE Label="la_title_Orders" Module="In-Commerce" Type="1">T3JkZXJz</PHRASE>
<PHRASE Label="la_title_OrdersArchived" Module="In-Commerce" Type="1">QXJjaGl2ZWQgT3JkZXJzIExpc3Q=</PHRASE>
<PHRASE Label="la_title_OrdersDenied" Module="In-Commerce" Type="1">RGVuaWVkIE9yZGVycyBMaXN0</PHRASE>
<PHRASE Label="la_title_OrdersExport" Module="In-Commerce" Type="1">T3JkZXJzIEV4cG9ydA==</PHRASE>
<PHRASE Label="la_title_OrderShipping" Module="In-Commerce" Type="1">U2hpcHBpbmc=</PHRASE>
<PHRASE Label="la_title_OrdersProcessed" Module="In-Commerce" Type="1">UHJvY2Vzc2VkIE9yZGVycyBMaXN0</PHRASE>
<PHRASE Label="la_title_OrdersReturns" Module="In-Commerce" Type="1">T3JkZXJzIHdpdGggUmV0dXJucw==</PHRASE>
<PHRASE Label="la_title_OrdersSearch" Module="In-Commerce" Type="1">Rm91bmQgT3JkZXJzIExpc3Q=</PHRASE>
<PHRASE Label="la_title_OrdersToShip" Module="In-Commerce" Type="1">VG8gU2hpcCBPcmRlcnMgTGlzdA==</PHRASE>
<PHRASE Label="la_title_Payments" Module="In-Commerce" Type="1">UGF5bWVudHM=</PHRASE>
<PHRASE Label="la_title_PaymentTypes" Module="In-Commerce" Type="1">UGF5bWVudCBUeXBlcw==</PHRASE>
<PHRASE Label="la_title_PayOut_To" Module="In-Commerce" Type="1">UGF5IE91dCBUbw==</PHRASE>
<PHRASE Label="la_title_PendingOrders" Module="In-Commerce" Type="1">UGVuZGluZyBPcmRlcnMgTGlzdA==</PHRASE>
<PHRASE Label="la_title_Products" Module="In-Commerce" Type="1">UHJvZHVjdHM=</PHRASE>
<PHRASE Label="la_title_ProductsExport" Module="In-Commerce" Type="1">UHJvZHVjdHMgRXhwb3J0</PHRASE>
<PHRASE Label="la_title_Product_Access" Module="In-Commerce" Type="1">QWNjZXNz</PHRASE>
<PHRASE Label="la_title_Product_AccessPricing" Module="In-Commerce" Type="1">UHJpY2luZw==</PHRASE>
<PHRASE Label="la_title_Product_Files" Module="In-Commerce" Type="1">RmlsZXM=</PHRASE>
<PHRASE Label="la_title_Product_Inventory" Module="In-Commerce" Type="1">SW52ZW50b3J5</PHRASE>
<PHRASE Label="la_title_Product_Options" Module="In-Commerce" Type="1">UHJvZHVjdCBPcHRpb25z</PHRASE>
<PHRASE Label="la_title_Product_PackageContent" Module="In-Commerce" Type="1">UGFja2FnZSBDb250ZW50</PHRASE>
<PHRASE Label="la_title_Product_Pricing" Module="In-Commerce" Type="1">UHJpY2luZw==</PHRASE>
<PHRASE Label="la_title_ReportOptions" Module="In-Commerce" Type="1">U2FsZXMgUmVwb3J0IC0gT3B0aW9ucw==</PHRASE>
<PHRASE Label="la_title_ReportResults" Module="In-Commerce" Type="1">U2FsZXMgUmVwb3J0IFJlc3VsdHM=</PHRASE>
<PHRASE Label="la_title_SalesReportChart" Module="In-Commerce" Type="1">U2FsZXMgUmVwb3J0IENoYXJ0</PHRASE>
<PHRASE Label="la_title_ShippingQuoteEngines" Module="In-Commerce" Type="1">U2hpcHBpbmcgUXVvdGUgRW5naW5lcw==</PHRASE>
<PHRASE Label="la_title_ShippingTypes" Module="In-Commerce" Type="1">U2hpcHBpbmcgVHlwZXM=</PHRASE>
<PHRASE Label="la_title_Taxes" Module="In-Commerce" Type="1">VGF4ZXM=</PHRASE>
<PHRASE Label="la_title_Zones" Module="In-Commerce" Type="1">Wm9uZXM=</PHRASE>
<PHRASE Label="la_TJS" Module="In-Commerce" Type="1">U29tb25p</PHRASE>
<PHRASE Label="la_TMM" Module="In-Commerce" Type="1">TWFuYXQ=</PHRASE>
<PHRASE Label="la_TND" Module="In-Commerce" Type="1">VHVuaXNpYW4gRGluYXI=</PHRASE>
<PHRASE Label="la_Tooltip_Add_Items" Module="In-Commerce" Type="1">QWRkIEl0ZW1z</PHRASE>
<PHRASE Label="la_ToolTip_Add_Product" Module="In-Commerce" Type="1">QWRkIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="la_ToolTip_Archive" Module="In-Commerce" Type="1">QXJjaGl2ZQ==</PHRASE>
<PHRASE Label="la_tooltip_Arrange" Module="In-Commerce" Type="1">QXJyYW5nZQ==</PHRASE>
<PHRASE Label="la_tooltip_ClearAll" Module="In-Commerce" Type="1">Q2xlYXIgQWxs</PHRASE>
<PHRASE Label="la_tooltip_EntireOrder" Module="In-Commerce" Type="1">RW50aXJlIE9yZGVy</PHRASE>
<PHRASE Label="la_tooltip_Flip" Module="In-Commerce" Type="1">RmxpcA==</PHRASE>
<PHRASE Label="la_ToolTip_GoToOrder" Module="In-Commerce" Type="1">R28gdG8gT3JkZXI=</PHRASE>
<PHRASE Label="la_tooltip_Infinity" Module="In-Commerce" Type="1">SW5maW5pdHk=</PHRASE>
<PHRASE Label="la_tooltip_Modify" Module="In-Commerce" Type="1">TW9kaWZ5</PHRASE>
<PHRASE Label="la_tooltip_MoreBrackets" Module="In-Commerce" Type="1">TW9yZSBCcmFja2V0cw==</PHRASE>
<PHRASE Label="la_ToolTip_NewAffiliatePaymentType" Module="In-Commerce" Type="1">TmV3IEFmZmlsaWF0ZSBQYXltZW50IFR5cGU=</PHRASE>
<PHRASE Label="la_ToolTip_NewGiftCertificate" Module="In-Commerce" Type="1">TmV3IEdpZnQgQ2VydGlmaWNhdGU=</PHRASE>
<PHRASE Label="la_tooltip_NewManufacturer" Module="In-Commerce" Type="1">TmV3IE1hbnVmYWN0dXJlcg==</PHRASE>
<PHRASE Label="la_ToolTip_NewOption" Module="In-Commerce" Type="1">TmV3IE9wdGlvbg==</PHRASE>
<PHRASE Label="la_tooltip_NewPaymentType" Module="In-Commerce" Type="1">TmV3IFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="la_ToolTip_NewPricing" Module="In-Commerce" Type="1">TmV3IFByaWNpbmc=</PHRASE>
<PHRASE Label="la_tooltip_newproduct" Module="In-Commerce" Type="1">TmV3IFByb2R1Y3Q=</PHRASE>
<PHRASE Label="la_ToolTip_NewShipZone" Module="In-Commerce" Type="1">TmV3IFNoaXBwaW5nIFpvbmU=</PHRASE>
<PHRASE Label="la_ToolTip_NewTaxZone" Module="In-Commerce" Type="1">TmV3IFRheCBab25l</PHRASE>
<PHRASE Label="la_ToolTip_New_Affiliate" Module="In-Commerce" Type="1">TmV3IEFmZmlsaWF0ZQ==</PHRASE>
<PHRASE Label="la_ToolTip_New_Affiliate_Plan" Module="In-Commerce" Type="1">TmV3IEFmZmlsaWF0ZSBQbGFu</PHRASE>
<PHRASE Label="la_tooltip_New_Coupon" Module="In-Commerce" Type="1">TmV3IENvdXBvbg==</PHRASE>
<PHRASE Label="la_tooltip_New_Discount" Module="In-Commerce" Type="1">TmV3IERpc2NvdW50</PHRASE>
<PHRASE Label="la_ToolTip_New_Order" Module="In-Commerce" Type="1">TmV3IE9yZGVy</PHRASE>
<PHRASE Label="la_ToolTip_New_PricingLimit" Module="In-Commerce" Type="1">TmV3IFByaWNpbmcgTGltaXQ=</PHRASE>
<PHRASE Label="la_tooltip_new_products" Module="In-Commerce" Type="1">QWRkIG5ldyBwcm9kdWN0cw==</PHRASE>
<PHRASE Label="la_tooltip_new_shipping" Module="In-Commerce" Type="1">TmV3IFNoaXBwaW5nIHR5cGU=</PHRASE>
<PHRASE Label="la_tooltip_new_Zone" Module="In-Commerce" Type="1">TmV3IFpvbmU=</PHRASE>
<PHRASE Label="la_ToolTip_PayOut" Module="In-Commerce" Type="1">UGF5IE91dA==</PHRASE>
<PHRASE Label="la_Tooltip_Pdf" Module="In-Commerce" Type="1">UERG</PHRASE>
<PHRASE Label="la_tooltip_PlaceOrder" Module="In-Commerce" Type="1">UGxhY2UgT3JkZXI=</PHRASE>
<PHRASE Label="la_Tooltip_Process" Module="In-Commerce" Type="1">UHJvY2Vzcw==</PHRASE>
<PHRASE Label="la_Tooltip_ResetToBilling" Module="In-Commerce" Type="1">UmVzZXQgVG8gQmlsbGluZw==</PHRASE>
<PHRASE Label="la_ToolTip_ResetToPending" Module="In-Commerce" Type="1">UmVzZXQgVG8gUGVuZGluZw==</PHRASE>
<PHRASE Label="la_ToolTip_ResetToShipping" Module="In-Commerce" Type="1">UmVzZXQgVG8gU2hpcHBpbmc=</PHRASE>
<PHRASE Label="la_Tooltip_ResetToUser" Module="In-Commerce" Type="1">UmVzZXQgVG8gVXNlcg==</PHRASE>
<PHRASE Label="la_tooltip_RunReport" Module="In-Commerce" Type="1">UnVuIFJlcG9ydA==</PHRASE>
<PHRASE Label="la_ToolTip_SaveAndPrint" Module="In-Commerce" Type="1">U2F2ZSAmIFByaW50</PHRASE>
<PHRASE Label="la_Tooltip_Ship" Module="In-Commerce" Type="1">U2hpcA==</PHRASE>
<PHRASE Label="la_ToolTip_UpdateRates" Module="In-Commerce" Type="1">VXBkYXRlIFJhdGVz</PHRASE>
<PHRASE Label="la_tooltip_view_chart" Module="In-Commerce" Type="1">VmlldyBDaGFydA==</PHRASE>
<PHRASE Label="la_TOP" Module="In-Commerce" Type="1">UGFgYW5nYQ==</PHRASE>
<PHRASE Label="la_ToShip" Module="In-Commerce" Type="1">VG8gU2hpcA==</PHRASE>
<PHRASE Label="la_TotalSavings" Module="In-Commerce" Type="1">VG90YWwgU2F2aW5ncw==</PHRASE>
<PHRASE Label="la_TPE" Module="In-Commerce" Type="1">VGltb3IgRXNjdWRv</PHRASE>
<PHRASE Label="la_TRL" Module="In-Commerce" Type="1">VHVya2lzaCBMaXJh</PHRASE>
<PHRASE Label="la_TRY" Module="In-Commerce" Type="1">VFJZ</PHRASE>
<PHRASE Label="la_TTD" Module="In-Commerce" Type="1">VHJpbmlkYWQgYW5kIFRvYmFnbyBEb2xsYXI=</PHRASE>
<PHRASE Label="la_TWD" Module="In-Commerce" Type="1">TmV3IFRhaXdhbiBEb2xsYXI=</PHRASE>
<PHRASE Label="la_Txt_=" Module="In-Commerce" Type="1">RXF1YWxz</PHRASE>
<PHRASE Label="la_TZS" Module="In-Commerce" Type="1">VGFuemFuaWFuIFNoaWxsaW5n</PHRASE>
<PHRASE Label="la_UAH" Module="In-Commerce" Type="1">SHJ5dm5pYQ==</PHRASE>
<PHRASE Label="la_UGX" Module="In-Commerce" Type="1">VWdhbmRhIFNoaWxsaW5n</PHRASE>
<PHRASE Label="la_UpdateRate" Module="In-Commerce" Type="1">VXBkYXRlIFJhdGUgVG8gUHJpbWFyeQ==</PHRASE>
<PHRASE Label="la_USD" Module="In-Commerce" Type="1">VVMgRG9sbGFy</PHRASE>
<PHRASE Label="la_Used" Module="In-Commerce" Type="1">VXNlZA==</PHRASE>
<PHRASE Label="la_UserDefined" Module="In-Commerce" Type="1">VXNlciBEZWZpbmVk</PHRASE>
<PHRASE Label="la_USN" Module="In-Commerce" Type="1">VVMgRG9sbGFyIChOZXh0IGRheSk=</PHRASE>
<PHRASE Label="la_USS" Module="In-Commerce" Type="1">VVMgRG9sbGFyIChTYW1lIGRheSk=</PHRASE>
<PHRASE Label="la_UYU" Module="In-Commerce" Type="1">UGVzbyBVcnVndWF5bw==</PHRASE>
<PHRASE Label="la_UZS" Module="In-Commerce" Type="1">VXpiZWtpc3RhbiBTdW0=</PHRASE>
<PHRASE Label="la_VAT" Module="In-Commerce" Type="1">U2FsZXMgVGF4L1ZBVA==</PHRASE>
<PHRASE Label="la_VEB" Module="In-Commerce" Type="1">Qm9saXZhcg==</PHRASE>
<PHRASE Label="la_ViewLabel" Module="In-Commerce" Type="1">VmlldyBMYWJlbA==</PHRASE>
<PHRASE Label="la_VND" Module="In-Commerce" Type="1">RG9uZw==</PHRASE>
<PHRASE Label="la_VUV" Module="In-Commerce" Type="1">VmF0dQ==</PHRASE>
<PHRASE Label="la_WarningCurrenciesNotUsed" Module="In-Commerce" Type="1">Rm9sbG93aW5nIGN1cnJlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gYW55IHBheW1lbnQgdHlwZXM=</PHRASE>
<PHRASE Label="la_WarningRemoveUnusedCurrencies" Module="In-Commerce" Type="1">V291bGQgeW91IGxpa2UgdG8gZGlzYWJsZSB0aGVt</PHRASE>
<PHRASE Label="la_warning_ChangeInventoryStatus" Module="In-Commerce" Type="1">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNoYW5nZSBJbnZlbnRvcnkgU3RhdHVzPyBDaGFuZ2luZyB0aGUgc3RhdHVzIG1heSBhZmZlY3QgY3VycmVudCBvcmRlcnMgYW5kIHByb2R1Y3QgcXVhbnRpdGllcy4=</PHRASE>
<PHRASE Label="la_warning_SelectOptionCombination" Module="In-Commerce" Type="1">U2VsZWN0IG9wdGlvbiBjb21iaW5hdGlvbiB0byB1c2U=</PHRASE>
<PHRASE Label="la_warning_UpdateAllCurrencyRates" Module="In-Commerce" Type="1">RG8geW91IHdhbnQgdG8gdXBkYXRlIGFsbCByYXRlcw==</PHRASE>
<PHRASE Label="la_warning_UpdateSelectedCurrencyRates" Module="In-Commerce" Type="1">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgcmF0ZXM=</PHRASE>
<PHRASE Label="la_WholeOrder" Module="In-Commerce" Type="1">V2hvbGUgT3JkZXI=</PHRASE>
<PHRASE Label="la_WST" Module="In-Commerce" Type="1">VGFsYQ==</PHRASE>
<PHRASE Label="la_XAF" Module="In-Commerce" Type="1">Q0ZBIEZyYW5jIEJFQUM=</PHRASE>
<PHRASE Label="la_XCD" Module="In-Commerce" Type="1">RWFzdCBDYXJpYmJlYW4gRG9sbGFy</PHRASE>
<PHRASE Label="la_XDR" Module="In-Commerce" Type="1">WERS</PHRASE>
<PHRASE Label="la_XOF" Module="In-Commerce" Type="1">Q0ZBIEZyYW5jIEJDRUFP</PHRASE>
<PHRASE Label="la_XPF" Module="In-Commerce" Type="1">Q0ZQIEZyYW5j</PHRASE>
<PHRASE Label="la_YER" Module="In-Commerce" Type="1">WWVtZW5pIFJpYWw=</PHRASE>
<PHRASE Label="la_YUM" Module="In-Commerce" Type="1">WXVnb3NsYXZpYW4gRGluYXI=</PHRASE>
<PHRASE Label="la_ZAR" Module="In-Commerce" Type="1">UmFuZA==</PHRASE>
<PHRASE Label="la_Zeros" Module="In-Commerce" Type="1">WmVyb3M=</PHRASE>
<PHRASE Label="la_ZIP" Module="In-Commerce" Type="1">WklQ</PHRASE>
<PHRASE Label="la_ZMK" Module="In-Commerce" Type="1">S3dhY2hh</PHRASE>
<PHRASE Label="la_zones_AvailableCountries" Module="In-Commerce" Type="1">QXZhaWxhYmxlIGNvdW50cmllcw==</PHRASE>
<PHRASE Label="la_zones_AvailableStates" Module="In-Commerce" Type="1">QXZhaWxhYmxlIHN0YXRlcw==</PHRASE>
<PHRASE Label="la_zones_AvailableZips" Module="In-Commerce" Type="1">QXZhaWxhYmxlIFpJUCBjb2Rlcw==</PHRASE>
<PHRASE Label="la_zones_SelectedCountries" Module="In-Commerce" Type="1">U2hpcCB0byBDb3VudHJpZXM=</PHRASE>
<PHRASE Label="la_zones_SelectedStates" Module="In-Commerce" Type="1">U2hpcCB0byBTdGF0ZXMvUHJvdmljZXM=</PHRASE>
<PHRASE Label="la_zones_SelectedZips" Module="In-Commerce" Type="1">U2hpcCB0byBaSVAgY29kZXM=</PHRASE>
<PHRASE Label="la_ZWD" Module="In-Commerce" Type="1">WmltYmFid2UgRG9sbGFy</PHRASE>
<PHRASE Label="lc_field_manufacturer" Module="In-Commerce" Type="2">TWFudWZhY3R1cmVy</PHRASE>
<PHRASE Label="lu_comm_ProfileAddressWarning" Module="In-Commerce" Type="1">VGhpcyBpcyB5b3VyIHByb2ZpbGUgYWRkcmVzcy4gSXQgd2lsbCBiZSB1cGRhdGVkIGlmIHlvdSBlZGl0IHRoZSBhZGRyZXNzIGJlbG93Lg==</PHRASE>
<PHRASE Label="lu_ship_Shipment" Module="In-Commerce" Type="1">U2hpcG1lbnQ=</PHRASE>
<PHRASE Label="lu_ship_ShippingType" Module="In-Commerce" Type="1">U2hpcHBpbmcgVHlwZQ==</PHRASE>
</PHRASES>
<EVENTS>
<EVENT MessageType="html" Event="AFFILIATE.PAYMENT" Type="0">U3ViamVjdDogQWZmaWxpYXRlIGNvbW1pc3Npb24gcGF5bWVudCBoYXMgYmVlbiBpc3N1ZWQKCllvdXIgYWZmaWxpYXRlIGNvbW1pc3Npb24gcGF5bWVudCBoYXMgYmVlbiBpc3N1ZWQsIHBsZWFzZSBsb2dpbiB0byBZb3VyIEFjY291bnQsIEFmZmlsaWF0ZSBQYXltZW50cyBzZWN0aW9uIHRvIGNoZWNrIHRoZSBkZXRhaWxzLg==</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.PAYMENT" Type="1">U3ViamVjdDogQWZmaWxpYXRlIGNvbW1pc3Npb24gcGF5bWVudCBpc3N1ZWQKCkFmZmlsaWF0ZSBjb21taXNzaW9uIHBheW1lbnQgaGFzIGJlZW4gaXNzdWVkLg==</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.PAYMENT.TYPE.CHANGED" Type="0">U3ViamVjdDogQWZmaWxpYXRlIHBheW1lbnQgdHlwZSBoYXMgY2hhbmdlZAoKQWZmaWxpYXRlIHBheW1lbnQgdHlwZSBoYXMgY2hhbmdlZA==</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.PAYMENT.TYPE.CHANGED" Type="1">U3ViamVjdDogQWZmaWxpYXRlIHBheW1lbnQgdHlwZSBjaGFuZ2VkCgpBZmZpbGlhdGUgcGF5bWVudCB0eXBlIGNoYW5nZWQ=</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.REGISTER" Type="0">U3ViamVjdDogTmV3IEFmZmlsaWF0ZSBSZWdpc3RyYXRpb24KCkhlbGxvLDxici8+PGJyLz4NCg0KVGhhbmsgeW91IGZvciByZWdpc3RlcmluZyBhcyBhZmZpbGlhdGUuIFlvdSB3aWxsIGJlIG5vdGlmaWVkIHZpYSBlLW1haWwgd2hlbiB5b3VyIHJlZ2lzdHJhdGlvbiBpcyBhcHByb3ZlZC4=</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.REGISTER" Type="1">U3ViamVjdDogTmV3IEFmZmlsaWF0ZSBSZWdpc3RlcmVkCgpOZXcgYWZmaWxpYXRlIHVzZXIgaGFzIHJlZ2lzdGVyZWQuIFBsZWFzZSBwcm9jZWVkIHRvIEFkbWluaXN0cmF0aXZlIENvbnNvbGUgdG8gcmV2aWV3IHRoZSByZWdpc3RyYXRpb24u</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.REGISTRATION.APPROVED" Type="0">U3ViamVjdDogQWZmaWxpYXRlIHJlZ2lzdHJhdGlvbiBhcHByb3ZlZAoKQWZmaWxpYXRlIHJlZ2lzdHJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZC4=</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.REGISTRATION.APPROVED" Type="1">U3ViamVjdDogQWZmaWxpYXRlIHJlZ2lzdHJhdGlvbiBhcHByb3ZlZAoKTmV3IEFmZmlsaWF0ZSByZWdpc3RyYXRpb24gaGFzIGJlZW4gYXBwcm92ZWQu</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.REGISTRATION.DENIED" Type="0">U3ViamVjdDogQWZmaWxpYXRlIHJlZ2lzdHJhdGlvbiBkZW5pZWQKCk5ldyBBZmZpbGlhdGUgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGRlbmllZC4=</EVENT>
<EVENT MessageType="html" Event="AFFILIATE.REGISTRATION.DENIED" Type="1">U3ViamVjdDogQWZmaWxpYXRlIHJlZ2lzdHJhdGlvbiBkZW5pZWQKCk5ldyBBZmZpbGlhdGUgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIGRlbmllZC4=</EVENT>
<EVENT MessageType="html" Event="BACKORDER.ADD" Type="0">U3ViamVjdDogTmV3IEJhY2tvcmRlciBhZGRlZAoKRGVhciA8aW5wMjpvcmRfRmllbGQgbmFtZT0iQmlsbGluZ1RvIi8+LDxici8+PGJyLz4NCg0KWW91ciBiYWNrIG9yZGVyIG51bWJlciA8aW5wMjpvcmRfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4gaGFzIGJlZW4gYWNjZXB0ZWQuIDxici8+PGJyLz4NCg0KWW91IHdpbGwgYmUgbm90aWZpZWQgYnkgZW1haWwgb25jZSB0aGUgb3JkZXIgaXMgcHJvY2Vzc2VkLg==</EVENT>
<EVENT MessageType="html" Event="BACKORDER.ADD" Type="1">U3ViamVjdDogTmV3IEJhY2tvcmRlciBhZGRlZAoKTmV3IGJhY2sgb3JkZXIgbnVtYmVyIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJPcmRlck51bWJlciIvPiBoYXMgYmVlbiBhZGRlZC4gPGJyLz48YnIvPg0KDQpQbGVhc2UgcHJvY2VlZCB0byBhZG1pbmlzdHJhdGl2ZSBjb25zb2xlIHRvIHJldmlldyB0aGUgb3JkZXIu</EVENT>
<EVENT MessageType="html" Event="BACKORDER.FULLFILL" Type="1">U3ViamVjdDogQmFja29yZGVyIGhhcyBiZWVuIFByb2Nlc3NlZAoKRGVhciA8aW5wMjpvcmQuLWludl9GaWVsZCBuYW1lPSJCaWxsaW5nVG8iLz4sPGJyLz48YnIvPg0KDQpZb3VyIGJhY2sgb3JkZXIgbnVtYmVyIDxpbnAyOm9yZC4taW52X0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+IGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgZnVsZmlsbGVkLg==</EVENT>
<EVENT MessageType="html" Event="BACKORDER.PROCESS" Type="0">U3ViamVjdDogWW91IEJhY2tvcmRlciAjPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4gLSBQcm9jZXNzZWQhCgpEZWFyIDxpbnAyOm9yZC4taW52X0ZpZWxkIG5hbWU9IkJpbGxpbmdUbyIvPiw8YnIvPjxici8+DQoNCllvdXIgYmFjayBvcmRlciAobnVtYmVyIDxpbnAyOm9yZC4taW52X0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+KSBoYXMgYmVlbiBwcm9jZXNzZWQu</EVENT>
<EVENT MessageType="html" Event="ORDER.APPROVE" Type="0">U3ViamVjdDogWW91ciBPcmRlciBpcyBBcHByb3ZlZAoKRGVhciA8aW5wMjpvcmQuLWludl9GaWVsZCBuYW1lPSJCaWxsaW5nVG8iLz4sPGJyLz48YnIvPg0KDQpZb3VyIG9yZGVyIG51bWJlciA8aW5wMjpvcmQuLWludl9GaWVsZCBuYW1lPSJPcmRlck51bWJlciIvPiBoYXMgYmVlbiBhcHByb3ZlZC48YnIvPjxici8+DQoNCjxpbnAyOm1faWYgY2hlY2s9Im1fZ2V0IiB2YXI9Im9yZGVyX2NvdXBvbnMiPg0KWW91IGNhbiB1c2UgY291cG9uczo8YnIvPjxici8+DQo8aW5wMjptX2dldCB2YXI9Im9yZGVyX2NvdXBvbnMiLz4NCjwvaW5wMjptX2lmPg==</EVENT>
<EVENT MessageType="html" Event="ORDER.DENY" Type="0">U3ViamVjdDogWW91ciBPcmRlciBpcyBEZW5pZWQKCkRlYXIgPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iQmlsbGluZ1RvIi8+LDxici8+PGJyLz4NCg0KU29ycnksIGJ1dCB5b3VyIG9yZGVyIChudW1iZXIgPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4pIGhhcyBiZWVuIGRlbmllZC48YnIvPjxici8+DQoNClBsZWFzZSBmZWVsIGZyZWUgdG8gY29udGFjdCB1cyBhcmUgPGEgaHJlZj0iIj48L2E+</EVENT>
<EVENT MessageType="html" Event="ORDER.RECURRING.DENIED" Type="0">U3ViamVjdDogUmVjdXJyaW5nIE9yZGVyIGlzIERlbmllZAoKRGVhciA8aW5wMjpvcmQucmVjdXJyaW5nX0ZpZWxkIG5hbWU9IkJpbGxpbmdUbyIvPiw8YnIvPjxici8+DQoNClNvcnJ5LCBidXQgeW91ciByZWN1cnJpbmcgb3JkZXIgKG51bWJlciA8aW5wMjpvcmQucmVjdXJyaW5nX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+KSBoYXMgYmVlbiBkZW5pZWQuPGJyLz48YnIvPg0KDQpQbGVhc2UgY29udGFjdCB3ZWJzaXRlIGFkbWluaXN0cmF0b3IgYXQgPGEgaHJlZj0ibWFpbHRvOjxpbnAyOm1fR2V0Q29uZmlnIHZhcj0iU210cF9BZG1pbk1haWxGcm9tIi8+PjxpbnAyOm1fR2V0Q29uZmlnIHZhcj0iU210cF9BZG1pbk1haWxGcm9tIi8+PC9hPg==</EVENT>
<EVENT MessageType="html" Event="ORDER.RECURRING.DENIED" Type="1">U3ViamVjdDogUmVjdXJyaW5nIE9yZGVyICM8aW5wMjpvcmQucmVjdXJyaW5nX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+IGlzIERlbmllZCBieSB0aGUgc3lzdGVtCgpSZWN1cnJpbmcgb3JkZXIgbnVtYmVyIDxpbnAyOm9yZC5yZWN1cnJpbmdfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4gaGFzIGJlZW4gZGVuaWVkLjxici8+PGJyLz4NCg0KUGxlYXNlIHByb2NlZWQgdG8gYWRtaW5pc3RyYXRpdmUgY29uc29sZSB0byByZXZpZXcgdGhlIG9yZGVyLg==</EVENT>
<EVENT MessageType="html" Event="ORDER.RECURRING.PROCESSED" Type="0">U3ViamVjdDogUmVjdXJyaW5nIE9yZGVyIFN1Y2Nlc3NmdWxseSBQcm9jZXNzZWQKCkRlYXIgPGlucDI6b3JkLnJlY3VycmluZ19GaWVsZCBuYW1lPSJCaWxsaW5nVG8iLz4sPGJyLz48YnIvPg0KDQpZb3VyIHJlY3VycmluZyBvcmRlciAobnVtYmVyIDxpbnAyOm9yZC5yZWN1cnJpbmdfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4pIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQuPGJyLz48YnIvPg0KDQpObyBmdXJ0aGVyIGFjdGlvbiBpcyByZXF1aXJlZCBhdCB0aGlzIHRpbWUuPGJyLz48YnIvPg==</EVENT>
<EVENT MessageType="html" Event="ORDER.RECURRING.PROCESSED" Type="1">U3ViamVjdDogUmVjdXJyaW5nIE9yZGVyICgjPGlucDI6b3JkLnJlY3VycmluZ19GaWVsZCBuYW1lPSJPcmRlck51bWJlciIvPikgaXMgUHJvY2Vzc2VkCgpSZWN1cnJpbmcgb3JkZXIgbnVtYmVyIDxpbnAyOm9yZC5yZWN1cnJpbmdfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZC48YnIvPjxici8+DQoNCk5vIGZ1cnRoZXIgYWN0aW9uIGlzIHJlcXVpcmVkIGF0IHRoaXMgdGltZS4NCg==</EVENT>
<EVENT MessageType="html" Event="ORDER.SHIP" Type="0">U3ViamVjdDogWW91ciBPcmRlciB3YXMgc2hpcHBlZAoKRGVhciA8aW5wMjpvcmQuLWludl9GaWVsZCBuYW1lPSJTaGlwcGluZ1RvIi8+LDxici8+PGJyLz4NCg0KWW91ciBvcmRlciAobnVtYmVyIDxpbnAyOm9yZC4taW52X0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+KSBoYXMgYmVlbiBzaGlwcGVkLg==</EVENT>
<EVENT MessageType="html" Event="ORDER.SUBMIT" Type="0">U3ViamVjdDogVGhhbmsgeW91IGZvciBZb3VyIE9yZGVyICg8aW5wMjpvcmRfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiIC8+KSEKCjxpbnAyOm1fRGVmaW5lRWxlbWVudCBuYW1lPSJvcmRlcml0ZW1fZWxlbSI+DQoJPGlucDI6RmllbGQgbmFtZT0iUHJvZHVjdE5hbWUiIHBhZD0iMzQiLz4gKHF0eSA8aW5wMjpGaWVsZCBuYW1lPSJRdWFudGl0eSIvPikgPGlucDI6RmllbGQgbmFtZT0iRXh0ZW5kZWRQcmljZSIgY3VycmVuY3k9InNlbGVjdGVkIi8+PGJyLz4NCjwvaW5wMjptX0RlZmluZUVsZW1lbnQ+DQoNCg0KRGVhciA8aW5wMjpvcmRfRmllbGQgbmFtZT0iQmlsbGluZ1RvIiAvPiw8YnIvPjxici8+DQoNClRoYW5rIHlvdSBmb3IgeW91ciBwdXJjaGFzZSE8YnIvPjxici8+DQoNCjxpbnAyOm1faWYgY2hlY2s9Im9yZF9Vc2luZ0NyZWRpdENhcmQiPg0KUGxlYXNlIGFsbG93IDI0IGhvdXJzIGZvciB1cyB0byBjb25maXJtIGFuZCBwcm9jZXNzIHlvdXIgb3JkZXIuDQo8aW5wMjptX2Vsc2UgLz4NClBsZWFzZSBzZW5kIGEgY2hlY2sgb3IgYSBtb25leSBvcmRlciBpbiB0aGUgYW1vdW50IG9mIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iVG90YWxBbW91bnQiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPiB0bzoNCjxici8+DQpBZGRyZXNzDQo8YnIvPg0KQWxsIGNoZWNrcyBtdXN0IGJlIGRyYXduIGluIFUuUy4gZnVuZHMgZnJvbSBhIFUuUy4gYmFuay4NClBsZWFzZSBhdHRhY2ggYSBwcmludG91dCBvZiB0aGlzIHJlY2VpcHQgd2l0aCB5b3VyIGNoZWNrIGFuZA0Kd3JpdGUgZG93biB5b3VyIG9yZGVyIG51bWJlci4gIFlvdXIgb3JkZXIgd2lsbCBiZSBhcHByb3ZlZA0Kd2l0aGluIDggYnVzaW5lc3MgZGF5cyBhZnRlciB0aGUgZGF5IHdlIHJlY2VpdmUgeW91ciBjaGVjaywNCm9yIHdpdGhpbiAyIGJ1c2luZXNzIGRheXMgYWZ0ZXIgd2UgcmVjZWl2ZSBhIG1vbmV5IG9yZGVyIG9yDQpiYW5rIGRyYWZ0Lg0KPC9pbnAyOm1faWY+DQo8YnIvPjxici8+PGJyLz4NCg0KDQpCZWxvdyBhcmUgdGhlIGRldGFpbHMgb2YgeW91ciBvcmRlcjo8YnIvPjxici8+DQoNCk9yZGVyIENvbnRlbnRzOg0KPGhyLz4NCjxpbnAyOm9yZF9QcmludENhcnQgaXRlbV9yZW5kZXJfYXM9Im9yZGVyaXRlbV9lbGVtIiBoZWFkZXJfcmVuZGVyX2FzPSJodG1sOiIgZm9vdGVyX3JlbmRlcl9hcz0iaHRtbDoiIGVtcHR5X2NhcnRfcmVuZGVyX2FzPSJodG1sOiIgcGVyX3BhZ2U9Ii0xIi8+IA0KPGhyLz4NClN1YiBUb3RhbDogICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IlN1YnRvdGFsV2l0aERpc2NvdW50IiBjdXJyZW5jeT0ic2VsZWN0ZWQiLz48YnIvPg0KVGF4ZXM6ICAgICAgIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJWQVQiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPjxici8+DQpUb3RhbDogICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJUb3RhbEFtb3VudCIgY3VycmVuY3k9InNlbGVjdGVkIi8+IDxici8+PGJyLz4NCg0KQmlsbGluZyBJbmZvcm1hdGlvbjoNCjxoci8+DQpBbW91bnQgQmlsbGVkOiAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IlRvdGFsQW1vdW50IiBjdXJyZW5jeT0ic2VsZWN0ZWQiLz4NCjxpbnAyOm1faWYgY2hlY2s9Im9yZF9Vc2luZ0NyZWRpdENhcmQiPg0KUGF5bWVudCBUeXBlOiAgICAgPGlucDI6b3JkX0ZpZWxkIG5hbWU9IlBheW1lbnRUeXBlIiAvPg0KQ3JlZGl0IENhcmQ6ICAgICAgPGlucDI6b3JkX0ZpZWxkIG5hbWU9IlBheW1lbnRBY2NvdW50IiBtYXNrZWQ9Im1hc2tlZCIvPg0KPGlucDI6bV9lbHNlIC8+DQpQYXltZW50IFR5cGU6ICAgICA8aW5wMjpvcmRfRmllbGQgbmFtZT0iUGF5bWVudFR5cGUiIC8+DQo8L2lucDI6bV9pZj48YnI+PGJyLz4NCg0KQ29udGFjdCBJbmZvcm1hdGlvbjoNCjxoci8+DQpOYW1lOiAgICAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdUbyIvPjxici8+DQpFLW1haWw6CQkJPGlucDI6bV9pZiBjaGVjaz0ib3JkX0ZpZWxkIiBuYW1lPSJCaWxsaW5nRW1haWwiPg0KICA8YSBocmVmPSJtYWlsdG86PGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nRW1haWwiLz4iPjxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0VtYWlsIi8+PC9hPg0KPGlucDI6bV9lbHNlIC8+DQogIDxhIGhyZWY9Im1haWx0bzo8aW5wMjp1X0ZpZWxkIGZpZWxkPSJFbWFpbCIvPiI+PGlucDI6dV9GaWVsZCBmaWVsZD0iRW1haWwiLz48L2E+DQo8L2lucDI6bV9pZj48YnIvPg0KQ29tcGFueS9Pcmdhbml6YXRpb246ICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0NvbXBhbnkiLz48YnIvPg0KUGhvbmU6ICAgICAgICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nUGhvbmUiLz48YnIvPg0KRmF4OiAgICAgICAgICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nRmF4Ii8+PGJyLz4NCkFkZHJlc3MgTGluZSAxOiAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0FkZHJlc3MxIi8+PGJyLz4NCkFkZHJlc3MgTGluZSAyOiAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0FkZHJlc3MyIi8+PGJyLz4NCkNpdHk6ICAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0NpdHkiLz48YnIvPg0KU3RhdGU6ICAgICAgICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nU3RhdGUiLz4gPGJyLz4NClpJUCBDb2RlOiAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1ppcCIvPjxici8+DQpDb3VudHJ5OiAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdDb3VudHJ5Ii8+PGJyLz4NCg==</EVENT>
<EVENT MessageType="html" Event="ORDER.SUBMIT" Type="1">U3ViamVjdDogTmV3IE9yZGVyIFN1Ym1pdHRlZCAoPGlucDI6b3JkX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+KQoKPGlucDI6bV9EZWZpbmVFbGVtZW50IG5hbWU9Im9yZGVyaXRlbV9lbGVtIj4NCjxpbnAyOkZpZWxkIG5hbWU9IlByb2R1Y3ROYW1lIiBwYWQ9IjM0Ii8+IChxdHkgPGlucDI6RmllbGQgbmFtZT0iUXVhbnRpdHkiLz4pIDxpbnAyOkZpZWxkIG5hbWU9IkV4dGVuZGVkUHJpY2UiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPjxici8+DQo8L2lucDI6bV9EZWZpbmVFbGVtZW50Pg0KDQoNCkEgbmV3IG9yZGVyIGhhcyBiZWVuIHBsYWNlZC4gQmVsb3cgaXMgdGhlIHJlY2VpcHQgdGhhdCBoYXMgYmVlbiBzZW50IHRvIHRoZSBjdXN0b21lci48YnIvPg0KUGxlYXNlIHByb2NlZWQgdG8gYWRtaW5pc3RyYXRpb24gc2VjdGlvbiB0byBhcHByb3ZlIHRoaXMgb3JkZXIuPGJyLz48YnIvPg0KDQpPcmRlciBOdW1iZXI6IDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJPcmRlck51bWJlciIgLz48YnIvPg0KRGF0ZS9UaW1lOiA8aW5wMjpvcmRfRmllbGQgbmFtZT0iT3JkZXJEYXRlIiAvPjxici8+PGJyLz48YnIvPg0KDQpEZWFyIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJCaWxsaW5nVG8iIC8+LDxici8+PGJyLz4NCg0KVGhhbmsgeW91IGZvciB5b3VyIHB1cmNoYXNlITxici8+PGJyLz4NCg0KPGlucDI6bV9pZiBjaGVjaz0ib3JkX1VzaW5nQ3JlZGl0Q2FyZCI+DQpQbGVhc2UgYWxsb3cgMjQgaG91cnMgZm9yIHVzIHRvIGNvbmZpcm0gYW5kIHByb2Nlc3MgeW91ciBvcmRlci4NCjxpbnAyOm1fZWxzZSAvPg0KUGxlYXNlIHNlbmQgYSBjaGVjayBvciBhIG1vbmV5IG9yZGVyIGluIHRoZSBhbW91bnQgb2YgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJUb3RhbEFtb3VudCIgY3VycmVuY3k9InNlbGVjdGVkIi8+IHRvOg0KPGJyPg0KQWRkcmVzcw0KPGJyPg0KQWxsIGNoZWNrcyBtdXN0IGJlIGRyYXduIGluIFUuUy4gZnVuZHMgZnJvbSBhIFUuUy4gYmFuay4NClBsZWFzZSBhdHRhY2ggYSBwcmludG91dCBvZiB0aGlzIHJlY2VpcHQgd2l0aCB5b3VyIGNoZWNrIGFuZA0Kd3JpdGUgZG93biB5b3VyIG9yZGVyIG51bWJlci4gIFlvdXIgb3JkZXIgd2lsbCBiZSBhcHByb3ZlZA0Kd2l0aGluIDggYnVzaW5lc3MgZGF5cyBhZnRlciB0aGUgZGF5IHdlIHJlY2VpdmUgeW91ciBjaGVjaywNCm9yIHdpdGhpbiAyIGJ1c2luZXNzIGRheXMgYWZ0ZXIgd2UgcmVjZWl2ZSBhIG1vbmV5IG9yZGVyIG9yDQpiYW5rIGRyYWZ0Lg0KPC9pbnAyOm1faWY+DQoNCg0KQmVsb3cgYXJlIHRoZSBkZXRhaWxzIG9mIHlvdXIgb3JkZXI6PGJyLz48YnIvPg0KDQpPcmRlciBDb250ZW50czo8YnIvPg0KPGhyLz4NCjxpbnAyOm9yZF9QcmludENhcnQgaXRlbV9yZW5kZXJfYXM9Im9yZGVyaXRlbV9lbGVtIiBoZWFkZXJfcmVuZGVyX2FzPSJodG1sOiIgZm9vdGVyX3JlbmRlcl9hcz0iaHRtbDoiIGVtcHR5X2NhcnRfcmVuZGVyX2FzPSJodG1sOiIgcGVyX3BhZ2U9Ii0xIi8+IA0KPGhyLz4NClN1YiBUb3RhbDogICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IlN1YnRvdGFsV2l0aERpc2NvdW50IiBjdXJyZW5jeT0ic2VsZWN0ZWQiLz48YnIvPg0KVGF4ZXM6ICAgICAgIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJWQVQiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPjxici8+DQpUb3RhbDogICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJUb3RhbEFtb3VudCIgY3VycmVuY3k9InNlbGVjdGVkIi8+PGJyLz4NCg0KQmlsbGluZyBJbmZvcm1hdGlvbjoNCjxoci8+DQpBbW91bnQgQmlsbGVkOgk8aW5wMjpvcmRfRmllbGQgZmllbGQ9IlRvdGFsQW1vdW50IiBjdXJyZW5jeT0ic2VsZWN0ZWQiLz48YnIvPg0KPGlucDI6bV9pZiBjaGVjaz0ib3JkX1VzaW5nQ3JlZGl0Q2FyZCI+DQpQYXltZW50IFR5cGU6CTxpbnAyOm9yZF9GaWVsZCBuYW1lPSJQYXltZW50VHlwZSIgLz48YnIvPg0KQ3JlZGl0IENhcmQ6CTxpbnAyOm9yZF9GaWVsZCBuYW1lPSJQYXltZW50QWNjb3VudCIgbWFza2VkPSJtYXNrZWQiLz4NCjxpbnAyOm1fZWxzZSAvPg0KUGF5bWVudCBUeXBlOgk8aW5wMjpvcmRfRmllbGQgbmFtZT0iUGF5bWVudFR5cGUiIC8+DQo8L2lucDI6bV9pZj48YnIvPjxici8+DQoNCkNvbnRhY3QgSW5mb3JtYXRpb246PGJyLz4NCjxoci8+DQpOYW1lOiA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdUbyIvPjxici8+IA0KRS1tYWlsOgkJCTxpbnAyOm1faWYgY2hlY2s9Im9yZF9GaWVsZCIgbmFtZT0iQmlsbGluZ0VtYWlsIj4NCiAgPGEgaHJlZj0ibWFpbHRvOjxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0VtYWlsIi8+Ij48aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdFbWFpbCIvPjwvYT4NCjxpbnAyOm1fZWxzZSAvPg0KICA8YSBocmVmPSJtYWlsdG86PGlucDI6dV9GaWVsZCBmaWVsZD0iRW1haWwiLz4iPjxpbnAyOnVfRmllbGQgZmllbGQ9IkVtYWlsIi8+PC9hPg0KPC9pbnAyOm1faWY+PGJyLz4NCkNvbXBhbnkvT3JnYW5pemF0aW9uOiA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdDb21wYW55Ii8+PGJyLz4NClBob25lOiAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1Bob25lIi8+PGJyLz4NCkZheDogICAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0ZheCIvPjxici8+DQpBZGRyZXNzIExpbmUgMTogICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdBZGRyZXNzMSIvPjxici8+DQpBZGRyZXNzIExpbmUgMjogICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdBZGRyZXNzMiIvPjxici8+DQpDaXR5OiAgICAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdDaXR5Ii8+PGJyLz4NClN0YXRlOiAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1N0YXRlIi8+PGJyLz4NClpJUCBDb2RlOiAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1ppcCIvPjxici8+DQpDb3VudHJ5OiAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdDb3VudHJ5Ii8+PGJyLz4=</EVENT>
<EVENT MessageType="html" Event="PRODUCT.SUGGEST" Type="0">U3ViamVjdDogWW91ciBGcmllbmQgcmVjb21tZW5kcyB0byBsb29rIGF0IHRoaXMgaXRlbQoKRGVhciA8aW5wMjptX3BhcmFtIG5hbWU9InRvX25hbWUiIC8+LDxici8+PGJyLz4NCg0KPGlucDI6bV9wYXJhbSBuYW1lPSJmcm9tX25hbWUiIC8+IHRoaW5rcyB0aGF0IHRoaXMgaXRlbSBpbiBvdXIgb25saW5lIHN0b3JlIG1pZ2h0IGJlIG9mIGludGVyZXN0IHRvIHlvdS4gPGlucDI6bV9wYXJhbSBuYW1lPSJmcm9tX25hbWUiIC8+IHdyaXRlczo8YnI+DQotLS0tPGJyPg0KPGJsb2NrcXVvdGU+DQo8aW5wMjptX3BhcmFtIG5hbWU9Im1lc3NhZ2VfdGV4dCIvPg0KPC9ibG9ja3F1b3RlPg0KLS0tLTxicj4NCjxicj4NClRvIHNlZSB0aGUgaXRlbSBkZXRhaWxzLCBwbGVhc2UgPGEgaHJlZj0iPGlucDI6cF9Qcm9kdWN0TGluayB0ZW1wbGF0ZT0iaW4tY29tbWVyY2UvcHJvZHVjdC9kZXRhaWxzIi8+Ij5jbGljayBoZXJlPC9hPi48YnI+DQo8YnI+DQpTaW5jZXJlbHksPGJyPg0KPGlucDI6Y29uZl9Db25maWdWYWx1ZSBuYW1lPSJTaXRlX05hbWUiLz4gb25saW5lIHN0b3JlIEFkbWluaXN0cmF0aW9uPGJyPg0KPGJyPg0KPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogc21hbGw7IGNvbG9yOiAjNTU1Ij4NClRoaXMgZW1haWwgd2FzIGdlbmVyYXRlZCBiZWNhdXNlIHNvbWVvbmUgd2hvIGtub3dzIHlvdXIgZW1haWwgYWRkcmVzcyBoYXMgY2hvc2VuIHRvIG5vdGlmeSB5b3UgYWJvdXQgb25lIG9mIG91ciBwcm9kdWN0cy4gVGhpcyBpcyBhbiBhdXRvbWF0aWMgZmVhdHVyZSBvZiBvdXIgb25saW5lIHN0b3JlLiBZb3VyIGVtYWlsIGFkZHJlc3MgaGFzIG5vdCBiZWVuIHJlY29yZGVkLCBhbmQgeW91IGhhdmUgbm90IGJlZW4gc3Vic2NyaWJlZCB0byBhbnkgbWFpbGluZyBsaXN0cy4gV2UgYXBvbG9naXplIGZvciBhbnkgaW5jb252ZW5pZW5jZSB0aGlzIG1lc3NhZ2UgbWlnaHQgaGF2ZSBjYXVzZWQuDQo8L3NtYWxsPg==</EVENT>
<EVENT MessageType="html" Event="PRODUCT.SUGGEST" Type="1">U3ViamVjdDogT25lIG9mIHlvdXIgUHJvZHVjdHMgaGFzIGJlZW4gUmVjb21tZW5kZWQKCkEgcHJvZHVjdCBmcm9tIGhhcyBiZWVuIHN1Z2dlc3RlZC48YnIvPjxici8+DQoNClN1Z2dlc3RlZCBwcm9kdWN0IGRldGFpbHM6IDxhIGhyZWY9IjxpbnAyOnBfUHJvZHVjdExpbmsgdGVtcGxhdGU9Il9fZGVmYXVsdF9fIi8+Ij48aW5wMjpwX0ZpZWxkIG5hbWU9Ik5hbWUiLz48L2E+PGJyPg0K</EVENT>
<EVENT MessageType="html" Event="USER.GIFTCERTIFICATE" Type="0">U3ViamVjdDogWW91ciBHaWZ0IENlcnRpZmljYXRlCgpEZWFyIDxpbnAyOm1fcGFyYW0gbmFtZT0idG9fbmFtZSIvPiw8YnIvPjxici8+DQoNClBsZWFzZSBhY2NlcHQgdGhpcyBnaWZ0IGNlcnRpZmljYXRlIGZvciB0aGUgYW1vdW50IG9mIDxpbnAyOm1fcGFyYW0gbmFtZT0iYW1vdW50Ii8+IC48YnIvPjxici8+DQoNCkNlcnRpZmljYXRlIGNvZGUgaXM6IDxpbnAyOm1fcGFyYW0gbmFtZT0iZ2lmY2VydF9pZCIvPiBhbmQgY2FuIGJlIHVzZWQgZm9yIGFueSBwdXJjaGFzZSBvbiBvdXIgd2Vic2l0ZS48YnIvPjxici8+DQoNCjxpbnAyOm1faWYgY2hlY2s9Im1fcGFyYW0iIG5hbWU9Im1lc3NhZ2UiPg0KPGlucDI6bV9wYXJhbSBuYW1lPSJtZXNzYWdlIi8+PGJyLz4NCjwvaW5wMjptX2lmPg0KPGJyLz4NCg0KVGhhbmsgeW91IGZvciBzaG9wcGluZyB3aXRoIHVzIQ0KDQoNCg0KDQo=</EVENT>
<EVENT MessageType="html" Event="USER.GIFTCERTIFICATE" Type="1">U3ViamVjdDogR2lmdCBDZXJ0aWZpY2F0ZSAtIEVtYWlsIENvbmZpcm1hdGlvbgoKVGhpcyBpcyBhbiBlbWFpbCBjb25maXJtYXRpb24gdGhhdCBHaWZ0IENlcnRpZmljYXRlICI8aW5wMjptX3BhcmFtIG5hbWU9ImdpZmNlcnRfaWQiLz4iIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBlbWFpbGVkIHRvIDxpbnAyOm1fcGFyYW0gbmFtZT0idG9fbmFtZSIvPiAoPGEgaHJlZj0ibWFpbHRvOjxpbnAyOm1fcGFyYW0gbmFtZT0idG9fZW1haWwiLz4iPjxpbnAyOm1fcGFyYW0gbmFtZT0idG9fZW1haWwiLz48L2E+KSAu</EVENT>
</EVENTS>
</LANGUAGE>
-</LANGUAGES>
\ No newline at end of file
+</LANGUAGES>
Index: branches/5.2.x/install/install_data.sql
===================================================================
--- branches/5.2.x/install/install_data.sql (revision 14883)
+++ branches/5.2.x/install/install_data.sql (revision 14884)
@@ -1,473 +1,474 @@
# Section "in-commerce:contacts":
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_CompanyName', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ContactsGeneral', 'la_text_CompanyName', 'text', NULL, NULL, 10.01, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_StoreName', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ContactsGeneral', 'la_text_StoreName', 'text', NULL, NULL, 10.02, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Contacts_Name', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ContactsGeneral', 'la_text_ContactName', 'text', NULL, NULL, 10.03, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Contacts_Phone', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ContactsGeneral', 'la_text_Phone', 'text', NULL, NULL, 10.04, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Contacts_Fax', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ContactsGeneral', 'la_text_Fax', 'text', NULL, NULL, 10.05, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Contacts_Email', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ContactsGeneral', 'la_text_Email', 'text', NULL, NULL, 10.06, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Contacts_Additional', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ContactsGeneral', 'la_text_Additional', 'textarea', NULL, NULL, 10.07, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_AddressLine1', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_StoreAddress', 'la_AddressLine1', 'text', NULL, NULL, 20.01, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_AddressLine2', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_StoreAddress', 'la_AddressLine2', 'text', NULL, NULL, 20.02, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_City', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_StoreAddress', 'la_City', 'text', NULL, NULL, 20.03, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_ZIP', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_StoreAddress', 'la_ZIP', 'text', NULL, NULL, 20.04, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Country', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_StoreAddress', 'la_Country', 'select', NULL, '0=lu_none||<SQL+>SELECT l%3$s_Name AS OptionName, IsoCode AS OptionValue FROM <PREFIX>CountryStates WHERE Type = 1 ORDER BY OptionName</SQL>', 20.05, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_State', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_StoreAddress', 'la_State', 'text', NULL, '', 20.06, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Shipping_AddressLine1', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ShippingAddress', 'la_AddressLine1', 'text', NULL, NULL, 30.01, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Shipping_AddressLine2', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ShippingAddress', 'la_AddressLine2', 'text', NULL, NULL, 30.02, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Shipping_City', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ShippingAddress', 'la_City', 'text', NULL, NULL, 30.03, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Shipping_ZIP', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ShippingAddress', 'la_ZIP', 'text', NULL, NULL, 30.04, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Shipping_Country', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ShippingAddress', 'la_Country', 'select', NULL, '0=lu_none||<SQL+>SELECT l%3$s_Name AS OptionName, IsoCode AS OptionValue FROM <PREFIX>CountryStates WHERE Type = 1 ORDER BY OptionName</SQL>', 30.05, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Shipping_State', '', 'In-Commerce', 'in-commerce:contacts', 'la_Text_ShippingAddress', 'la_State', 'text', NULL, NULL, 30.06, 0, 1, NULL);
# Section "in-commerce:general":
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_RequireLoginBeforeCheckout', '0', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_orders_RequireLogin', 'checkbox', NULL, NULL, 10.01, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Allow_Order_Different_Types', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_AllowOrderDifferentTypes', 'checkbox', NULL, NULL, 10.02, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Enable_Backordering', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_EnableBackordering', 'checkbox', NULL, NULL, 10.03, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Process_Backorders_Auto', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_ProcessBackorderingAuto', 'checkbox', NULL, NULL, 10.04, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Next_Order_Number', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_orders_NextOrderNumber', 'text', NULL, NULL, 10.05, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Order_Number_Format_P', '6', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_OrderMainNumberDigits', 'text', NULL, NULL, 10.06, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Order_Number_Format_S', '3', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_OrderSecNumberDigits', 'text', NULL, NULL, 10.07, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_RecurringChargeInverval', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_RecurringChargeInverval', 'text', NULL, NULL, 10.08, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_AutoProcessRecurringOrders', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_AutoProcessRecurringOrders', 'checkbox', NULL, NULL, 10.09, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'MaxAddresses', '0', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_MaxAddresses', 'text', NULL, NULL, 10.1, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_MaskProcessedCreditCards', '0', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_MaskProcessedCreditCards', 'checkbox', NULL, NULL, 10.11, 0, 0, NULL);
+INSERT INTO ConfigurationValues VALUES(DEFAULT, 'OrderVATIncluded', '0', 'In-Commerce', 'in-commerce:general', 'la_Text_Orders', 'la_config_OrderVATIncluded', 'checkbox', NULL, NULL, 10.12, '0', '0', NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_AllowOrderingInNonPrimaryCurrency', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_Currencies', 'la_AllowOrderingInNonPrimaryCurrency', 'checkbox', NULL, NULL, 20.01, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_ExchangeRateSource', '3', 'In-Commerce', 'in-commerce:general', 'la_Text_Currencies', 'la_ExchangeRateSource', 'select', NULL, '2=la_FederalReserveBank||3=la_EuropeanCentralBank||1=la_BankOfLatvia', 20.02, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_DefaultCouponDuration', '14', 'In-Commerce', 'in-commerce:general', 'la_Text_Coupons', 'la_conf_DefaultCouponDuration', 'text', NULL, NULL, 30.01, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_RegisterAsAffiliate', '0', 'In-Commerce', 'in-commerce:general', 'la_Text_Affiliates', 'la_prompt_register_as_affiliate', 'checkbox', NULL, '', 40.01, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_AffiliateStorageMethod', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_Affiliates', 'la_prompt_affiliate_storage_method', 'radio', NULL, '1=la_opt_Session||2=la_opt_PermanentCookie', 40.02, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_AffiliateCookieDuration', '30', 'In-Commerce', 'in-commerce:general', 'la_Text_Affiliates', 'la_prompt_affiliate_cookie_duration', 'text', NULL, '', 40.03, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_PriceBracketCalculation', '1', 'In-Commerce', 'in-commerce:general', 'la_Text_PricingCalculation', 'la_prompt_PriceBracketCalculation', 'radio', NULL, '1=la_opt_PriceCalculationByPrimary||2=la_opt_PriceCalculationByOptimal', 50, 0, 1, NULL);
# Section "in-commerce:output":
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'product_OrderProductsBy', 'Name', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_conf_OrderProductsBy', 'select', NULL, '=la_none||Name=la_fld_Title||SKU=la_fld_SKU||Manufacturer=la_fld_Manufacturer||Price=la_fld_Price||CreatedOn=la_fld_CreatedOn||Modified=la_fld_Modified||Qty=la_fld_Qty||<SQL>SELECT Prompt AS OptionName, CONCAT("cust_", FieldName) AS OptionValue FROM <PREFIX>CustomField WHERE (Type = 11) AND (IsSystem = 0)</SQL>', 10.01, 1, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'product_OrderProductsByDir', 'ASC', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_conf_OrderProductsBy', 'select', NULL, 'ASC=la_common_Ascending||DESC=la_common_Descending', 10.01, 2, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'product_OrderProductsThenBy', 'Price', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_conf_ThenBy', 'select', NULL, '=la_none||Name=la_fld_Title||SKU=la_fld_SKU||Manufacturer=la_fld_Manufacturer||Price=la_fld_Price||CreatedOn=la_fld_CreatedOn||Modified=la_fld_Modified||Qty=la_fld_Qty||<SQL>SELECT Prompt AS OptionName, CONCAT("cust_", FieldName) AS OptionValue FROM <PREFIX>CustomField WHERE (Type = 11) AND (IsSystem = 0)</SQL>', 10.02, 1, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'product_OrderProductsThenByDir', 'ASC', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_conf_ThenBy', 'select', NULL, 'ASC=la_common_Ascending||DESC=la_common_Descending', 10.02, 2, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Perpage_Products', '10', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_Perpage_Products', 'text', NULL, NULL, 10.03, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Perpage_Products_Short', '3', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_Perpage_Products_Shortlist', 'text', NULL, NULL, 10.04, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Product_NewDays', '7', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_conf_DaysToBeNew', 'text', NULL, NULL, 10.05, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Product_MinPopRating', '4', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_fld_Product_MinPopRating', 'text', NULL, NULL, 10.06, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Product_MinPopVotes', '1', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_fld_Product_MinPopVotes', 'text', NULL, NULL, 10.07, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Product_MaxHotNumber', '5', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_fld_Product_MaxHotNumber', 'text', NULL, NULL, 10.08, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'products_EditorPicksAboveRegular', '1', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_conf_EditorPicksAboveRegular', 'checkbox', NULL, NULL, 10.09, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'product_RatingDelay_Value', '30', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_prompt_DupRating', 'text', '', 'style="width: 50px;"', 10.1, 1, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'product_RatingDelay_Interval', '86400', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_prompt_DupRating', 'select', '', '1=la_opt_Sec||60=la_opt_Min||3600=la_opt_Hour||86400=la_opt_Day||604800=la_opt_Week||2419200=la_opt_Month||29030400=la_opt_Year', 10.1, 2, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'ShowProductImagesInOrders', '0', 'In-Commerce', 'in-commerce:output', 'la_Text_Products', 'la_config_ShowProductImagesInOrders', 'checkbox', NULL, NULL, 10.11, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Perpage_Reviews', '10', 'In-Commerce', 'in-commerce:output', 'la_Text_Reviews', 'la_config_PerpageReviews', 'text', NULL, NULL, 20.01, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'product_ReviewDelay_Value', '30', 'In-Commerce', 'in-commerce:output', 'la_Text_Reviews', 'la_prompt_DupReviews', 'text', '', 'style="width: 50px;"', 20.02, 1, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'product_ReviewDelay_Interval', '86400', 'In-Commerce', 'in-commerce:output', 'la_Text_Reviews', 'la_prompt_DupReviews', 'select', '', '1=la_opt_Sec||60=la_opt_Min||3600=la_opt_Hour||86400=la_opt_Day||604800=la_opt_Week||2419200=la_opt_Month||29030400=la_opt_Year', 20.02, 2, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Perpage_Manufacturers', '10', 'In-Commerce', 'in-commerce:output', 'la_Text_Manufacturers', 'la_Perpage_Manufacturers', 'text', NULL, NULL, 30.01, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Comm_Perpage_Manufacturers_Short', '3', 'In-Commerce', 'in-commerce:output', 'la_Text_Manufacturers', 'la_Perpage_Manufacturers_Short', 'text', NULL, NULL, 30.02, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'p_CategoryTemplate', '/in-commerce/designs/section', 'In-Commerce', 'in-commerce:output', 'la_section_Templates', 'la_fld_CategoryTemplate', 'text', '', '', 40.01, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'p_ItemTemplate', 'in-commerce/products/product_detail', 'In-Commerce', 'in-commerce:output', 'la_section_Templates', 'la_fld_ItemTemplate', 'text', '', '', 40.02, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'p_MaxImageCount', '5', 'In-Commerce', 'in-commerce:output', 'la_section_ImageSettings', 'la_config_MaxImageCount', 'text', '', '', 50.01, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'p_ThumbnailImageWidth', '120', 'In-Commerce', 'in-commerce:output', 'la_section_ImageSettings', 'la_config_ThumbnailImageWidth', 'text', '', '', 50.02, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'p_ThumbnailImageHeight', '120', 'In-Commerce', 'in-commerce:output', 'la_section_ImageSettings', 'la_config_ThumbnailImageHeight', 'text', '', '', 50.03, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'p_FullImageWidth', '450', 'In-Commerce', 'in-commerce:output', 'la_section_ImageSettings', 'la_config_FullImageWidth', 'text', '', '', 50.04, 0, 0, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'p_FullImageHeight', '450', 'In-Commerce', 'in-commerce:output', 'la_section_ImageSettings', 'la_config_FullImageHeight', 'text', '', '', 50.05, 0, 0, NULL);
# Section "in-commerce:search":
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'Search_ShowMultiple_products', '1', 'In-Commerce', 'in-commerce:search', 'la_config_ShowMultiple', 'la_Text_MultipleShow', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'SearchRel_Keyword_products', '70', 'In-Commerce', 'in-commerce:search', 'la_config_SearchRel_DefaultKeyword', 'la_text_keyword', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'SearchRel_Pop_products', '10', 'In-Commerce', 'in-commerce:search', 'la_config_DefaultPop', 'la_text_popularity', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'SearchRel_Rating_products', '10', 'In-Commerce', 'in-commerce:search', 'la_config_DefaultRating', 'la_prompt_Rating', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO ConfigurationValues VALUES(DEFAULT, 'SearchRel_Increase_products', '30', 'In-Commerce', 'in-commerce:search', 'la_config_DefaultIncreaseImportance', 'la_text_increase_importance', 'text', NULL, NULL, 0, 0, 1, NULL);
INSERT INTO Currencies VALUES (6, 'AFA', '', 0, 'la_AFA', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (7, 'ALL', '', 0, 'la_ALL', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (8, 'DZD', '', 0, 'la_DZD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (9, 'ADP', '', 0, 'la_ADP', 1, 1124019233, 0, 0, 0);
INSERT INTO Currencies VALUES (10, 'AOA', '', 0, 'la_AOA', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (11, 'ARS', '', 0, 'la_ARS', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (12, 'AMD', '', 0, 'la_AMD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (13, 'AWG', '', 0, 'la_AWG', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (14, 'AZM', '', 0, 'la_AZM', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (15, 'BSD', '', 0, 'la_BSD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (16, 'BHD', '', 0, 'la_BHD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (17, 'BDT', '', 0, 'la_BDT', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (18, 'BBD', '', 0, 'la_BBD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (19, 'BYR', '', 0, 'la_BYR', 0.46440677966102, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (20, 'BZD', '', 0, 'la_BZD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (21, 'BMD', '', 0, 'la_BMD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (22, 'BTN', '', 0, 'la_BTN', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (23, 'INR', '', 0, 'la_INR', 0.022962112514351, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (24, 'BOV', '', 0, 'la_BOV', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (25, 'BOB', '', 0, 'la_BOB', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (26, 'BAM', '', 0, 'la_BAM', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (27, 'BWP', '', 0, 'la_BWP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (28, 'BRL', '', 0, 'la_BRL', 0.42331625957753, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (29, 'BND', '', 0, 'la_BND', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (30, 'BGL', '', 0, 'la_BGL', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (31, 'BGN', '', 0, 'la_BGN', 0.60754639807761, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (32, 'BIF', '', 0, 'la_BIF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (33, 'KHR', '', 0, 'la_KHR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (34, 'CAD', '', 0, 'la_CAD', 0.80579100834068, 1120657409, 0, 0, 0);
INSERT INTO Currencies VALUES (35, 'CVE', '', 0, 'la_CVE', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (36, 'KYD', '', 0, 'la_KYD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (37, 'XAF', '', 0, 'la_XAF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (38, 'CLF', '', 0, 'la_CLF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (39, 'CLP', '', 0, 'la_CLP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (40, 'CNY', '', 0, 'la_CNY', 0.12082358922217, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (41, 'COP', '', 0, 'la_COP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (42, 'KMF', '', 0, 'la_KMF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (43, 'CDF', '', 0, 'la_CDF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (44, 'CRC', '', 0, 'la_CRC', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (45, 'HRK', '', 0, 'la_HRK', 0.16222968545216, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (46, 'CUP', '', 0, 'la_CUP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (47, 'CYP', '', 0, 'la_CYP', 2.0723753051971, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (48, 'CZK', '', 0, 'la_CZK', 0.039512535745162, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (49, 'DKK', '', 0, 'la_DKK', 0.15944343065693, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (50, 'DJF', '', 0, 'la_DJF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (51, 'DOP', '', 0, 'la_DOP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (52, 'TPE', '', 0, 'la_TPE', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (53, 'ECV', '', 0, 'la_ECV', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (54, 'ECS', '', 0, 'la_ECS', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (55, 'EGP', '', 0, 'la_EGP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (56, 'SVC', '', 0, 'la_SVC', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (57, 'ERN', '', 0, 'la_ERN', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (58, 'EEK', '', 0, 'la_EEK', 0.075946211956591, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (59, 'ETB', '', 0, 'la_ETB', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (60, 'FKP', '', 0, 'la_FKP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (61, 'FJD', '', 0, 'la_FJD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (62, 'GMD', '', 0, 'la_GMD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (63, 'GEL', '', 0, 'la_GEL', 1, 1124019233, 0, 0, 0);
INSERT INTO Currencies VALUES (64, 'GHC', '', 0, 'la_GHC', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (65, 'GIP', '', 0, 'la_GIP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (66, 'GTQ', '', 0, 'la_GTQ', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (67, 'GNF', '', 0, 'la_GNF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (68, 'GWP', '', 0, 'la_GWP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (69, 'GYD', '', 0, 'la_GYD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (70, 'HTG', '', 0, 'la_HTG', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (71, 'HNL', '', 0, 'la_HNL', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (72, 'HKD', '', 0, 'la_HKD', 0.1286359158665, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (73, 'HUF', '', 0, 'la_HUF', 0.0048070388349515, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (74, 'ISK', '', 0, 'la_ISK', 0.015143366891806, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (75, 'IDR', '', 0, 'la_IDR', 0.00010126584435926, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (76, 'IRR', '', 0, 'la_IRR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (77, 'IQD', '', 0, 'la_IQD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (78, 'ILS', '', 0, 'la_ILS', 0.21864406779661, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (79, 'JMD', '', 0, 'la_JMD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (80, 'JPY', '', 0, 'la_JPY', 0.0089325716003909, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (81, 'JOD', '', 0, 'la_JOD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (82, 'KZT', '', 0, 'la_KZT', 7.3559322033898, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (83, 'KES', '', 0, 'la_KES', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (84, 'AUD', '', 0, 'la_AUD', 0.74088160109733, 1120650640, 1, 0, 0);
INSERT INTO Currencies VALUES (85, 'KPW', '', 0, 'la_KPW', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (86, 'KRW', '', 0, 'la_KRW', 0.00095066281590758, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (87, 'KWD', '', 0, 'la_KWD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (88, 'KGS', '', 0, 'la_KGS', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (89, 'LAK', '', 0, 'la_LAK', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (90, 'LVL', '', 0, 'la_LVL', 1.7697169946847, 1124019016, 0, 0, 0);
INSERT INTO Currencies VALUES (91, 'LBP', '', 0, 'la_LBP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (92, 'LSL', '', 0, 'la_LSL', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (93, 'LRD', '', 0, 'la_LRD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (94, 'LYD', '', 0, 'la_LYD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (95, 'CHF', '', 0, 'la_CHF', 0.76560788608981, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (96, 'LTL', '', 0, 'la_LTL', 0.34415546802595, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (97, 'MOP', '', 0, 'la_MOP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (98, 'MKD', '', 0, 'la_MKD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (99, 'MGF', '', 0, 'la_MGF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (100, 'MWK', '', 0, 'la_MWK', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (101, 'MYR', '', 0, 'la_MYR', 0.2631019594819, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (102, 'MVR', '', 0, 'la_MVR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (103, 'MTL', '', 0, 'la_MTL', 2.7679944095038, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (104, 'EUR', '&euro;&nbsp;', 0, 'la_EUR', 1.2319, 1124019016, 1, 0, 0);
INSERT INTO Currencies VALUES (105, 'MRO', '', 0, 'la_MRO', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (106, 'MUR', '', 0, 'la_MUR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (107, 'MXN', '', 0, 'la_MXN', 0.092980009298001, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (108, 'MXV', '', 0, 'la_MXV', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (109, 'MDL', '', 0, 'la_MDL', 0.079830508474576, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (110, 'MNT', '', 0, 'la_MNT', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (111, 'XCD', '', 0, 'la_XCD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (112, 'MZM', '', 0, 'la_MZM', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (113, 'MMK', '', 0, 'la_MMK', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (114, 'ZAR', '', 0, 'la_ZAR', 0.14487399875645, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (115, 'NAD', '', 0, 'la_NAD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (116, 'NPR', '', 0, 'la_NPR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (117, 'ANG', '', 0, 'la_ANG', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (118, 'XPF', '', 0, 'la_XPF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (119, 'NZD', '', 0, 'la_NZD', 0.67409802586794, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (120, 'NIO', '', 0, 'la_NIO', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (121, 'NGN', '', 0, 'la_NGN', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (122, 'NOK', '', 0, 'la_NOK', 0.15015163002274, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (123, 'OMR', '', 0, 'la_OMR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (124, 'PKR', '', 0, 'la_PKR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (125, 'PAB', '', 0, 'la_PAB', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (126, 'PGK', '', 0, 'la_PGK', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (127, 'PYG', '', 0, 'la_PYG', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (128, 'PEN', '', 0, 'la_PEN', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (129, 'PHP', '', 0, 'la_PHP', 0.017769769111138, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (130, 'PLN', '', 0, 'la_PLN', 0.29408270844161, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (131, 'USD', '$&nbsp;', 0, 'la_USD', 1, 1124019100, 1, 1, 0);
INSERT INTO Currencies VALUES (132, 'QAR', '', 0, 'la_QAR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (133, 'ROL', '', 0, 'la_ROL', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (134, 'RUB', NULL, 0, 'la_RUB', 0.0347, 1123850285, 0, 0, 0);
INSERT INTO Currencies VALUES (136, 'RWF', '', 0, 'la_RWF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (137, 'SHP', '', 0, 'la_SHP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (138, 'WST', '', 0, 'la_WST', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (139, 'STD', '', 0, 'la_STD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (140, 'SAR', '', 0, 'la_SAR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (141, 'SCR', '', 0, 'la_SCR', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (142, 'SLL', '', 0, 'la_SLL', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (143, 'SGD', '', 0, 'la_SGD', 0.58838383838384, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (144, 'SKK', '', 0, 'la_SKK', 0.031050431147113, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (145, 'SIT', '', 0, 'la_SIT', 0.0049628299365185, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (146, 'SBD', '', 0, 'la_SBD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (147, 'SOS', '', 0, 'la_SOS', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (148, 'LKR', '', 0, 'la_LKR', 0.0099920063948841, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (149, 'SDD', '', 0, 'la_SDD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (150, 'SRG', '', 0, 'la_SRG', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (151, 'SZL', '', 0, 'la_SZL', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (152, 'SEK', '', 0, 'la_SEK', 0.12594327624216, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (153, 'SYP', '', 0, 'la_SYP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (154, 'TWD', '', 0, 'la_TWD', 0.031298904538341, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (155, 'TJS', '', 0, 'la_TJS', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (156, 'TZS', '', 0, 'la_TZS', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (157, 'THB', '', 0, 'la_THB', 0.024061474911918, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (158, 'XOF', '', 0, 'la_XOF', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (159, 'NZD', '', 0, 'la_NZD', 0.67409802586794, 1120650640, 0, 0, 0);
INSERT INTO Currencies VALUES (160, 'TOP', '', 0, 'la_TOP', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (161, 'TTD', '', 0, 'la_TTD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (162, 'TND', '', 0, 'la_TND', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (163, 'TRL', '', 0, 'la_TRL', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (164, 'TMM', '', 0, 'la_TMM', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (165, 'UGX', '', 0, 'la_UGX', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (166, 'UAH', '', 0, 'la_UAH', 0.19830508474576, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (167, 'AED', '', 0, 'la_AED', 0.2728813559322, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (168, 'GBP', NULL, 0, 'la_GBP', 1.7543367535248, 1120657409, 1, 0, 0);
INSERT INTO Currencies VALUES (169, 'USS', '', 0, 'la_USS', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (170, 'USN', '', 0, 'la_USN', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (171, 'UYU', '', 0, 'la_UYU', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (172, 'UZS', '', 0, 'la_UZS', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (173, 'VUV', '', 0, 'la_VUV', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (174, 'VEB', '', 0, 'la_VEB', 0.00046628741956542, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (175, 'VND', '', 0, 'la_VND', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (176, 'MAD', '', 0, 'la_MAD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (177, 'YER', '', 0, 'la_YER', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (178, 'YUM', '', 0, 'la_YUM', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (179, 'ZMK', '', 0, 'la_ZMK', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (180, 'ZWD', '', 0, 'la_ZWD', 1, 1120641028, 0, 0, 0);
INSERT INTO Currencies VALUES (181, 'AFN', '', 0, 'la_AFN', 0.02, 1120641028, 0, 0, 0);
INSERT INTO CustomField VALUES (DEFAULT, 11, 'Features', 'la_Features', 1, 'la_Text_CustomFields', 'la_Features', 'textarea', 'rows="5" cols="70"', '', 0, 1, 0, 0);
INSERT INTO CustomField VALUES (DEFAULT, 11, 'Availability', 'la_Availability', 1, 'la_Text_CustomFields', 'la_Availability', 'text', 'size="70"', '', 0, 1, 0, 0);
INSERT INTO CustomField VALUES (DEFAULT, 1, 'p_ItemTemplate', 'la_fld_cust_p_ItemTemplate', 0, 'la_title_SystemCF', 'la_fld_cust_p_ItemTemplate', 'text', NULL, '', 0, 0, 1, 0);
INSERT INTO CustomField VALUES (DEFAULT, 6, 'shipping_addr_block', 'la_fld_BlockShippingAddress', 0, 'la_section_StoreSettings', 'la_fld_BlockShippingAddress', 'checkbox', '1=+Block', '', 0, 1, 1, 0);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.SUBMIT', NULL, 1, 1, 'In-Commerce', 'Order Submitted', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.SUBMIT', NULL, 1, 1, 'In-Commerce', 'Order Submitted', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.APPROVE', NULL, 1, 0, 'In-Commerce', 'Order Approved', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.DENY', NULL, 1, 0, 'In-Commerce', 'Order Denied', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.SHIP', NULL, 1, 0, 'In-Commerce', 'Order Shipped', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'BACKORDER.ADD', NULL, 1, 1, 'In-Commerce', 'Backorder Added', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'BACKORDER.ADD', NULL, 1, 1, 'In-Commerce', 'Backorder Added', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'BACKORDER.FULLFILL', NULL, 1, 0, 'In-Commerce', 'Back-order is Fulfilled', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'BACKORDER.PROCESS', NULL, 1, 0, 'In-Commerce', 'Backorder Processed', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'PRODUCT.SUGGEST', NULL, 1, 0, 'In-Commerce', 'Suggest product to a friend', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'PRODUCT.SUGGEST', NULL, 1, 1, 'In-Commerce', 'Suggest product to a friend', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.REGISTER', NULL, 1, 1, 'In-Commerce', 'Affiliate registered', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.REGISTER', NULL, 1, 1, 'In-Commerce', 'Affiliate registered', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.PAYMENT', NULL, 1, 0, 'In-Commerce', 'Affiliate payment issued', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.PAYMENT', NULL, 1, 0, 'In-Commerce', 'Affiliate payment issued', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.REGISTRATION.APPROVED', NULL, 1, 0, 'In-Commerce', 'Affiliate registration approved', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.REGISTRATION.APPROVED', NULL, 0, 0, 'In-Commerce', 'Affiliate registration approved', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.REGISTRATION.DENIED', NULL, 1, 0, 'In-Commerce', 'Affiliate registration denied', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.REGISTRATION.DENIED', NULL, 0, 0, 'In-Commerce', 'Affiliate registration denied', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.PAYMENT.TYPE.CHANGED', NULL, 1, 0, 'In-Commerce', 'Affiliate payment type changed', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'AFFILIATE.PAYMENT.TYPE.CHANGED', NULL, 1, 0, 'In-Commerce', 'Affiliate payment type changed', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.RECURRING.PROCESSED', NULL, 1, 0, 'In-Commerce', 'Recurring Order Processed', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.RECURRING.PROCESSED', NULL, 1, 0, 'In-Commerce', 'Recurring Order Processed', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.RECURRING.DENIED', NULL, 1, 0, 'In-Commerce', 'Recurring Order Denied', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'ORDER.RECURRING.DENIED', NULL, 1, 0, 'In-Commerce', 'Recurring Order Denied', 1, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'USER.GIFTCERTIFICATE', NULL, 1, 0, 'In-Commerce', 'Gift Certificate', 0, 1, 1);
INSERT INTO Events (EventId, Event, ReplacementTags, Enabled, FrontEndOnly, Module, Description, Type, AllowChangingSender, AllowChangingRecipient) VALUES(DEFAULT, 'USER.GIFTCERTIFICATE', NULL, 1, 0, 'In-Commerce', 'Gift Certificate', 1, 1, 1);
INSERT INTO GatewayConfigFields VALUES (1, 'submit_url', 'Gateway URL', 'text', '', 2);
INSERT INTO GatewayConfigFields VALUES (2, 'user_account', 'Authorize.net User Name', 'text', '', 2);
INSERT INTO GatewayConfigFields VALUES (4, 'transaction_key', 'Authorize.net Transaction Key', 'text', '', 2);
INSERT INTO GatewayConfigFields VALUES (9, 'business_account', 'Username', 'text', '', 4);
INSERT INTO GatewayConfigFields VALUES (10, 'submit_url', 'Gateway URL', 'text', '', 4);
INSERT INTO GatewayConfigFields VALUES (11, 'currency_code', 'Payment Currency Code', 'text', '', 4);
INSERT INTO GatewayConfigFields VALUES (12, 'shipping_control', 'Shipping Control', 'select', '3=la_CreditDirect,4=la_CreditPreAuthorize', 2);
INSERT INTO GatewayConfigFields VALUES (13, 'encapsulate_char', 'Encapsulate Char', 'text', '', 2);
INSERT INTO GatewayConfigFields VALUES (14, 'shipping_control', 'Shipping Control', 'select', '3=la_CreditDirect,4=la_CreditPreAuthorize', 4);
INSERT INTO GatewayConfigValues VALUES (36, 12, 3, '4');
INSERT INTO GatewayConfigValues VALUES (35, 1, 3, 'https://secure.authorize.net/gateway/transact.dll');
INSERT INTO GatewayConfigValues VALUES (34, 2, 3, '');
INSERT INTO GatewayConfigValues VALUES (33, 4, 3, '');
INSERT INTO GatewayConfigValues VALUES (32, 9, 4, '');
INSERT INTO GatewayConfigValues VALUES (31, 10, 4, 'https://www.paypal.com/cgi-bin/webscr');
INSERT INTO GatewayConfigValues VALUES (37, 11, 4, 'USD');
INSERT INTO GatewayConfigValues VALUES (38, 13, 3, '|');
INSERT INTO GatewayConfigValues VALUES (39, 14, 4, '4');
INSERT INTO Gateways VALUES (1, 'None', 'kGWBase', 'gw_base.php', 0);
INSERT INTO Gateways VALUES (2, 'Credit Card (Authorize.Net)', 'kGWAuthorizeNet', 'authorizenet.php', 1);
INSERT INTO Gateways VALUES (3, 'Credit Card (Manual Processing)', 'kGWBase', 'gw_base.php', 1);
INSERT INTO Gateways VALUES (4, 'PayPal', 'kGWPayPal', 'paypal.php', 0);
INSERT INTO ItemTypes VALUES (11, 'In-Commerce', 'p', 'Products', 'Name', 'CreatedById', NULL, NULL, '', 0, '', 'ProductsItem', 'Product');
INSERT INTO ItemTypes VALUES (13, 'In-Commerce', 'ord', 'Orders', 'OrderNumber', '', NULL, NULL, '', 0, '', 'OrdersItem', 'Order');
INSERT INTO PaymentTypes VALUES (1, 'Credit Card (manual)', 'Credit Card', 'Please enter your credit card details.', NULL, 1, 0, 1, 1, 3, DEFAULT, DEFAULT, ',15,');
INSERT INTO PaymentTypes VALUES (4, 'PayPal', 'PayPal', 'You will be redirected to PayPal site to make the payment after confirming your order on the next checkout step.', NULL, 0, 0, 0, 1, 4, DEFAULT, DEFAULT, ',15,');
INSERT INTO PaymentTypes VALUES (2, 'Check/MO', 'Check or Money Order', NULL, NULL, 0, 0, 0, 1, 1, 1, DEFAULT, ',15,');
INSERT INTO PaymentTypes VALUES (3, 'Authorize.Net', 'Credit Card', 'Please enter your Credit Card details below. Your credit card will not be charged until you confirm your purchase on the next(last) step of checkout process.', NULL, 0, 0, 0, 1, 2, DEFAULT, DEFAULT, ',15,');
INSERT INTO PaymentTypeCurrencies VALUES (DEFAULT, 4, 131);
INSERT INTO PaymentTypeCurrencies VALUES (DEFAULT, 2, 131);
INSERT INTO PaymentTypeCurrencies VALUES (DEFAULT, 3, 131);
INSERT INTO PaymentTypeCurrencies VALUES (DEFAULT, 1, 131);
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.RATE', 'la_PermName_Product.Rate_desc', 'In-Commerce', 1);
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.REVIEW', 'la_PermName_Product.Review_desc', 'In-Commerce', 1);
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.REVIEW.PENDING', 'la_PermName_Product.Review_Pending_desc', 'In-Commerce', 1);
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.ADD', 'la_PermName_Product.Add_desc', 'In-Commerce', 1);
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.DELETE', 'la_PermName_Product.Delete_desc', 'In-Commerce', 1);
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.MODIFY', 'la_PermName_Product.Modify_desc', 'In-Commerce', 1);
INSERT INTO PermissionConfig VALUES (DEFAULT, 'PRODUCT.VIEW', 'la_PermName_Product.View_desc', 'In-Commerce', 1);
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.VIEW', 14, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.RATE', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.REVIEW', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.REVIEW.PENDING', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'FAVORITES', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.VIEW', 13, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.VIEW', 12, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.ADD', 11, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.DELETE', 11, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.MODIFY', 11, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'PRODUCT.VIEW', 11, 1, 0, {ProductCatId});
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:products.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:setting_folder.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.advanced:deny', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.advanced:archive', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.advanced:place', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.advanced:process', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.advanced:ship', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:orders.advanced:reset_to_pending', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:discounts.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:discounts.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:discounts.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:discounts.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:discounts.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:discounts.advanced:decline', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:coupons.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:coupons.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:coupons.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:coupons.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:coupons.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:coupons.advanced:decline', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:manufacturers.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:manufacturers.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:manufacturers.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:manufacturers.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:currencies.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:currencies.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:currencies.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:currencies.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:currencies.advanced:move_up', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:currencies.advanced:move_down', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:currencies.advanced:update_rate', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:currencies.advanced:set_primary', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping.advanced:decline', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping_quote_engines.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping_quote_engines.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping_quote_engines.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:shipping_quote_engines.advanced:decline', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:payment_types.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:payment_types.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:payment_types.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:payment_types.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:taxes.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:taxes.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:taxes.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:taxes.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliates.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliates.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliates.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliates.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliates.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliates.advanced:decline', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_plans.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_plans.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_plans.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_plans.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_plans.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_plans.advanced:decline', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_plans.advanced:set_primary', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.advanced:decline', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.advanced:set_primary', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.advanced:move_up', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:affiliate_payment_types.advanced:move_down', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:general.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:general.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:output.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:output.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:search.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:search.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:contacts.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:contacts.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:configuration_custom.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:configuration_custom.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:configuration_custom.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:configuration_custom.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:paymentlog.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:downloadlog.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:downloadlog.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:gift-certificates.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:gift-certificates.add', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:gift-certificates.edit', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:gift-certificates.delete', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:gift-certificates.advanced:approve', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:gift-certificates.advanced:decline', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:reports.view', 11, 1, 1, 0);
INSERT INTO Permissions VALUES (DEFAULT, 'in-commerce:reports.add', 11, 1, 1, 0);
INSERT INTO SearchConfig VALUES ('Products', 'OrgId', 0, 0, 'lu_fielddesc_prod_orgid', 'lc_field_orgid', 'In-Commerce', 'la_Text_Products', 19, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'NewItem', 0, 1, 'lu_fielddesc_prod_newitem', 'lu_field_newproduct', 'In-Commerce', 'la_Text_Products', 18, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'PopItem', 0, 1, 'lu_fielddesc_prod_popitem', 'lu_field_popproduct', 'In-Commerce', 'la_Text_Products', 17, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'HotItem', 0, 1, 'lu_fielddesc_prod_topseller', 'lc_field_topseller', 'In-Commerce', 'la_Text_Products', 16, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'EditorsPick', 0, 1, 'lu_fielddesc_prod_editorspick', 'lc_field_EditorsPick', 'In-Commerce', 'la_Text_Products', 14, DEFAULT, 0, 'boolean', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'CachedReviewsQty', 0, 0, 'lu_fielddesc_prod_cachedreviewsqty', 'lc_field_cachedreviewsqty', 'In-Commerce', 'la_Text_Products', 9, DEFAULT, 0, 'range', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'CachedVotesQty', 0, 0, 'lu_fielddesc_prod_cachedvotesqty', 'lc_field_cachedvotesqty', 'In-Commerce', 'la_Text_Products', 8, DEFAULT, 0, 'range', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'ProductId', 0, 0, 'lu_fielddesc_prod_productid', 'lu_field_productid', 'In-Commerce', 'la_Text_Products', 0, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'Name', 1, 1, 'lu_fielddesc_prod_producttitle', 'lu_field_producttitle', 'In-Commerce', 'la_Text_Products', 1, DEFAULT, 3, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'Description', 1, 1, 'lu_fielddesc_prod_description', 'lc_field_description', 'In-Commerce', 'la_Text_Products', 2, DEFAULT, 1, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'CreatedOn', 0, 1, 'lu_fielddesc_prod_createdon', 'lc_field_createdon', 'In-Commerce', 'la_Text_Products', 4, DEFAULT, 0, 'date', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'Modified', 0, 1, 'lu_fielddesc_prod_modified', 'lc_field_modified', 'In-Commerce', 'la_Text_Products', 5, DEFAULT, 0, 'date', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'Hits', 0, 1, 'lu_fielddesc_prod_qtysold', 'lc_field_qtysold', 'In-Commerce', 'la_Text_Products', 6, DEFAULT, 0, 'range', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'CachedRating', 0, 0, 'lu_fielddesc_prod_cachedrating', 'lc_field_cachedrating', 'In-Commerce', 'la_Text_Products', 7, DEFAULT, 0, 'range', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('CustomField', 'Features', 1, 0, 'la_Features', 'la_Features', 'In-Commerce', 'la_Text_CustomFields', 0, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'SKU', 1, 1, 'lu_fielddesc_prod_sku', 'lu_field_sku', 'In-Commerce', 'la_Text_Products', 0, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'DescriptionExcerpt', 1, 0, 'lu_fielddesc_prod_descriptionex', 'lc_field_descriptionex', 'In-Commerce', 'la_Text_Products', 2, DEFAULT, 1, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'ManufacturerId', 1, 1, 'lu_fielddesc_prod_manufacturer', 'lc_field_manufacturer', 'In-Commerce', 'la_Text_Products', 3, DEFAULT, 2, 'text', 'Manufacturers.Name', '{ForeignTable}.ManufacturerId={LocalTable}.ManufacturerId', NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('Products', 'Price', 1, 1, 'lu_fielddesc_prod_price', 'lu_field_price', 'In-Commerce', 'la_Text_Products', 23, DEFAULT, 2, 'range', 'CALC:MIN( IF({PREFIX}ProductsDiscounts.Type = 1, {PREFIX}ProductsPricing.Price - {PREFIX}ProductsDiscounts.Amount, IF({PREFIX}ProductsDiscounts.Type = 2, ({PREFIX}ProductsPricing.Price * (1-{PREFIX}ProductsDiscounts.Amount/100)), {PREFIX}ProductsPricing.Price ) ) )', '{PREFIX}ProductsPricing ON {PREFIX}ProductsPricing.ProductId = {PREFIX}Products.ProductId AND {PREFIX}ProductsPricing.IsPrimary = 1 LEFT JOIN {PREFIX}ProductsDiscountItems ON {PREFIX}ProductsDiscountItems.ItemResourceId = {PREFIX}Products.ResourceId LEFT JOIN {PREFIX}ProductsDiscounts ON {PREFIX}ProductsDiscounts.DiscountId = {PREFIX}ProductsDiscountItems.DiscountId AND {PREFIX}ProductsDiscounts.Status = 1 AND {PREFIX}ProductsDiscountItems.ItemType = 1 AND ( {PREFIX}ProductsDiscounts.GroupId IN ({USER_GROUPS},NULL) AND ( ({PREFIX}ProductsDiscounts.Start IS NULL OR {PREFIX}ProductsDiscounts.Start < UNIX_TIMESTAMP()) AND ({PREFIX}ProductsDiscounts.Start IS NULL OR {PREFIX}ProductsDiscounts.End > UNIX_TIMESTAMP()) ) )', NULL, NULL, NULL, NULL, NULL);
INSERT INTO SearchConfig VALUES ('CustomField', 'Availability', 0, 0, 'la_Availability', 'la_Availability', 'In-Commerce', 'la_Text_CustomFields', 0, DEFAULT, 0, 'text', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO ShippingQuoteEngines VALUES (1, 'Intershipper.com', 0, 0, 0, 'a:21:{s:12:"AccountLogin";N;s:15:"AccountPassword";s:0:"";s:10:"UPSEnabled";i:1;s:10:"UPSAccount";N;s:11:"UPSInvoiced";N;s:10:"FDXEnabled";i:1;s:10:"FDXAccount";N;s:10:"DHLEnabled";i:1;s:10:"DHLAccount";N;s:11:"DHLInvoiced";i:0;s:10:"USPEnabled";i:1;s:10:"USPAccount";N;s:11:"USPInvoiced";i:0;s:10:"ARBEnabled";i:1;s:10:"ARBAccount";N;s:11:"ARBInvoiced";N;s:10:"1DYEnabled";i:1;s:10:"2DYEnabled";i:1;s:10:"3DYEnabled";i:1;s:10:"GNDEnabled";i:1;s:10:"ShipMethod";s:3:"DRP";}', 'Intershipper');
INSERT INTO ShippingQuoteEngines VALUES ( DEFAULT, 'USPS.com', 0, 0, 0, 'a:21:{s:12:"AccountLogin";s:0:"";s:15:"AccountPassword";N;s:10:"UPSEnabled";N;s:10:"UPSAccount";s:0:"";s:11:"UPSInvoiced";N;s:10:"FDXEnabled";N;s:10:"FDXAccount";s:0:"";s:10:"DHLEnabled";N;s:10:"DHLAccount";s:0:"";s:11:"DHLInvoiced";N;s:10:"USPEnabled";N;s:10:"USPAccount";s:0:"";s:11:"USPInvoiced";N;s:10:"ARBEnabled";N;s:10:"ARBAccount";s:0:"";s:11:"ARBInvoiced";N;s:10:"1DYEnabled";N;s:10:"2DYEnabled";N;s:10:"3DYEnabled";N;s:10:"GNDEnabled";N;s:10:"ShipMethod";N;}', 'USPS' ) ;
DELETE FROM Cache WHERE VarName = 'config_files';
INSERT INTO ImportScripts VALUES (DEFAULT, 'Products from CSV file [In-Commerce]', '', 'p', 'In-Commerce', '', 'CSV', '1');
INSERT INTO Modules VALUES ('In-Commerce', 'modules/in-commerce/', 'p', DEFAULT, 1, 4, 'in-commerce/', 2, NULL, NULL);

Event Timeline