Page MenuHomeIn-Portal Phabricator

in-commerce
No OneTemporary

File Metadata

Created
Tue, Feb 11, 4:24 PM

in-commerce

This file is larger than 256 KB, so syntax highlighting was skipped.
Index: branches/RC/in-commerce/constants.php
===================================================================
--- branches/RC/in-commerce/constants.php (revision 11628)
+++ branches/RC/in-commerce/constants.php (revision 11629)
@@ -1,27 +1,29 @@
<?php
// order statuses
define('ORDER_STATUS_INCOMPLETE', 0);
define('ORDER_STATUS_PENDING', 1);
define('ORDER_STATUS_BACKORDERS', 2);
define('ORDER_STATUS_TOSHIP', 3);
define('ORDER_STATUS_PROCESSED', 4);
define('ORDER_STATUS_DENIED', 5);
define('ORDER_STATUS_ARCHIVED', 6);
define('PRODUCT_TYPE_TANGIBLE', 1);
define('PRODUCT_TYPE_SUBSCRIPTION', 2);
define('PRODUCT_TYPE_SERVICE', 3);
define('PRODUCT_TYPE_DOWNLOADABLE', 4);
define('PRODUCT_TYPE_PACKAGE', 5);
// payment gateway processing satuses
define('SHIPPING_CONTROL_DIRECT', 3);
define('SHIPPING_CONTROL_PREAUTH', 4);
// gift certificate statuses
define('gcENABLED', 1);
define('gcUSED', 2);
define('gcDISABLED', 0);
+
+ define('USPS_LABEL_FOLDER', FULL_PATH.'/system/user_files/labels/');
?>
\ No newline at end of file
Property changes on: branches/RC/in-commerce/constants.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.3.2.1
\ No newline at end of property
+1.3.2.2
\ No newline at end of property
Index: branches/RC/in-commerce/units/orders/orders_event_handler.php
===================================================================
--- branches/RC/in-commerce/units/orders/orders_event_handler.php (revision 11628)
+++ branches/RC/in-commerce/units/orders/orders_event_handler.php (revision 11629)
@@ -1,3848 +1,4021 @@
<?php
class OrdersEventHandler extends kDBEventHandler
{
/**
* Checks permissions of user
*
* @param kEvent $event
*/
function CheckPermission(&$event)
{
if (!$this->Application->IsAdmin()) {
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));
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;
}
}
}
}
return parent::CheckPermission($event);
}
/**
* Allows to override standart 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),
'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),
'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();
$object->IgnoreValidation = true;
$event->CallSubEvent('OnPreSave');
$object->IgnoreValidation = false;
}
/**
* Sets new address to order
*
* @param kEvent $event
*/
function OnSelectAddress(&$event)
{
if ($this->Application->IsAdmin()) return true;
$object =& $event->getObject();
$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');
$address =& $this->Application->recallObject('addr.-item','addr', Array('skip_autoload' => true));
$addr_list =& $this->Application->recallObject('addr', 'addr_List', Array('per_page'=>-1, 'skip_counting'=>true) );
$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 == 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');
}
}
/**
* Enter description here...
*
* @param unknown_type $event
* @return unknown
*/
function OnUserLogin(&$event)
{
if( !($event->MasterEvent->status == erSUCCESS) ) {
return false;
}
$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');
}
function updateUserID($order_id, &$event)
{
$table = $this->Application->getUnitOption($event->Prefix,'TableName');
$id_field = $this->Application->getUnitOption($event->Prefix,'IDField');
$user_id = $this->Application->RecallVar('user_id');
$this->Conn->Query('UPDATE '.$table.' SET PortalUserId = '.$user_id.' WHERE '.$id_field.' = '.$order_id);
$affiliate_id = $this->isAffiliate($user_id);
if($affiliate_id)
{
$this->Conn->Query('UPDATE '.$table.' SET AffiliateId = '.$affiliate_id.' WHERE '.$id_field.' = '.$order_id);
}
}
function isAffiliate($user_id)
{
$affiliate_user =& $this->Application->recallObject('affil.-item', null, Array('skip_autoload' => true) );
$affiliate_user->Load($user_id, 'PortalUserId');
return $affiliate_user->isLoaded() ? $affiliate_user->GetDBField('AffiliateId') : 0;
}
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'] );
$payment_result = $gateway_object->DirectPayment($order->FieldValues, $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());
}
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 InvetnoryAction
$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) );
$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();
$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->redirect_params['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 = 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) );
$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);
}
$email_event_user =& $this->Application->EmailEventUser('ORDER.SUBMIT', $order->GetDBField('PortalUserId'), $this->OrderEmailParams($order));
$email_event_admin =& $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->IsAdmin() )
{
// 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->redirect_params['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');
}
/**
* Set billing address same as shipping
*
* @param kEvent $event
*/
function setBillingAddress(&$event)
{
$object =& $event->getObject();
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)
{
$env = $this->Application->GetVar('continue_shopping_template');
if (!$env || $env == '__default__') {
$env = $this->Application->RecallVar('continue_shopping');
}
if (!$env) {
$env = 'in-commerce/index';
}
$event->redirect = $env;
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnCheckout(&$event)
{
$this->OnUpdateCart($event);
if ($event->getEventParam('RecalculateChangedCart'))
{
$event->SetRedirectParam('checkout_error', $event->redirect_params['checkout_error']);
}
else
{
$object =& $event->getObject();
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->redirect_params['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();
$payment_type_id = $object->GetDBField('PaymentType');
if(!$payment_type_id)
{
$default_type = $this->Conn->GetOne('SELECT PaymentTypeId FROM '.TABLE_PREFIX.'PaymentTypes WHERE IsPrimary = 1');
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');
}
function OnCancelRecurring(&$event)
{
$order =& $event->GetObject();
$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)
{
$object =& $event->getObject();
$cvv2 = $object->GetDBField('PaymentCVV2');
if($cvv2 !== false) $this->Application->StoreVar('CVV2Code', $cvv2);
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnUpdate(&$event)
{
$this->setBillingAddress($event);
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
$object =& $event->getObject();
if( $object->HasTangibleItems() )
{
$cs_helper->CheckStateField($event, 'ShippingState', 'ShippingCountry');
}
$cs_helper->CheckStateField($event, 'BillingState', 'BillingCountry');
parent::OnUpdate($event);
if ($this->Application->IsAdmin()) {
return true;
}
else {
$event->redirect_params = Array('opener' => 's');
}
if ($event->status == erSUCCESS) {
$this->createMissingAddresses($event);
}
else {
// strange: recalculate total amount on error
$object->SetDBField('TotalAmount', $object->getTotalAmount());
}
}
/**
* Creates new address
*
* @param kEvent $event
*/
function createMissingAddresses(&$event)
{
if (!$this->Application->LoggedIn()) {
return false;
}
$object =& $event->getObject();
$addr_list =& $this->Application->recallObject('addr', 'addr_List', Array('per_page'=>-1, 'skip_counting'=>true) );
$addr_list->Query();
$address_dummy =& $this->Application->recallObject('addr.-item', null, Array('skip_autoload' => true));
$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();
}
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnPreSave(&$event)
{
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
$object =& $event->getObject();
if ( $object->GetID() !== false)
{
if( $object->HasTangibleItems() )
{
$cs_helper->CheckStateField($event, 'ShippingState', 'ShippingCountry');
}
$cs_helper->CheckStateField($event, 'BillingState', 'BillingCountry');
}
parent::OnPreSave($event);
}
function OnUpdateCart(&$event)
{
$this->Application->HandleEvent($items_event, 'orditems:OnUpdate');
return $event->CallSubEvent('OnRecalculateItems');
}
/**
* 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));
$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');
$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->IsAdmin() ? 1 : null);
}
if ($event->status == erSUCCESS && !$event->redirect) {
$event->redirect_params['pass'] = 'm';
$event->redirect_params['pass_category'] = 0; //otherwise mod-rewrite shop-cart URL will include category
$event->redirect = true;
}
else {
if ($this->Application->IsAdmin()) {
$event->redirect_params['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 = erSUCCESS;
$event->redirect = $this->Application->IsAdmin() ? true : $this->Application->GetVar('shop_cart_template');
}
else {
$event->status = 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 == erSUCCESS && $this->Application->IsAdmin()) {
$event->redirect_params['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');
// $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);
/*
// Customization healtheconomics.org
$item_data['DurationType'] = $pricing_info['DurationType'];
$item_data['AccessExpiration'] = $pricing_info['AccessExpiration'];
// Customization healtheconomics.org --
*/
$item_data['Duration'] = $pricing_info['AccessDuration'] * $unit_secs[ $pricing_info['AccessUnit'] ];
return $item_data;
}
function OnRemoveCoupon(&$event)
{
$object =& $event->getObject();
$this->RemoveCoupon($object);
$event->CallSubEvent('OnRecalculateItems');
$event->SetRedirectParam('checkout_error', 7);
}
function RemoveCoupon(&$object)
{
$coupon_id = $object->GetDBField('CouponId');
$coupon =& $this->Application->recallObject('coup', null, Array('skip_autoload' => true));
$res = $coupon->Load($coupon_id);
$uses = $coupon->GetDBField('NumberOfUses');
if($res && isset($uses))
{
$coupon->SetDBField('NumberOfUses', $uses + 1);
$coupon->SetDBField('Status', 1);
$coupon->Update();
}
$object->SetDBField('CouponId', 0);
$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->IsAdmin() ) return $passed;
if ($event->Special == 'last') {
// return last order id (for using on thank you page)
return $this->Application->RecallVar('front_order_id');
}
$ses_id = $this->Application->RecallVar( $event->getPrefixSpecial(true).'_id' );
if ( $passed && ($passed != $ses_id) )
{
$query = 'SELECT PortalUserId FROM '.TABLE_PREFIX.'Orders WHERE OrderId = '.$passed;
$user_id = $this->Conn->GetOne($query);
if ($user_id != $this->Application->RecallVar('user_id'))
{
$this->Application->SetVar($event->getPrefixSpecial().'_id', 0);
return 0;
}
else
{
return $passed;
}
}
else // not passed or equals to ses_id
{
if (!$ses_id)
{
$this->CreateNewCart($event);
return $this->Application->RecallVar($event->getPrefixSpecial(true).'_id');
}
else
{
return $ses_id;
}
}
return $passed;
}
function CreateNewCart(&$event)
{
$object =& $event->getObject( Array('skip_autoload' => true) );
$new_number = $this->getNextOrderNumber($event);
$object->SetDBField('Number', $new_number);
$object->SetDBField('SubNumber', 0);
$object->SetDBField('Type', 0); //incomplete
$object->SetDBField('VisitId', $this->Application->RecallVar('visit_id') );
$user_id = $this->Application->RecallVar('user_id');
if (!$user_id) $user_id = -2; //Guest
$object->SetDBField('PortalUserId', $user_id);
$affiliate_id = $this->isAffiliate($user_id);
if($affiliate_id)
{
$object->SetDBField('AffiliateId', $affiliate_id);
}
else
{
$affiliate_storage_method = $this->Application->ConfigValue('Comm_AffiliateStorageMethod');
$object->SetDBField('AffiliateId', $affiliate_storage_method == 1 ? (int)$this->Application->RecallVar('affiliate_id') : (int)$this->Application->GetVar('affiliate_id') );
}
$default_type = $this->Conn->GetOne('SELECT PaymentTypeId FROM '.TABLE_PREFIX.'PaymentTypes WHERE IsPrimary = 1');
if($default_type)
{
$object->SetDBField('PaymentType', $default_type);
}
$object->Create();
$this->Application->SetVar($event->getPrefixSpecial(true).'_id', $object->GetId());
$this->Application->StoreVar($event->getPrefixSpecial(true).'_id', $object->GetId());
}
function StoreContinueShoppingLink()
{
list($index_file, $env) = explode('|', $this->Application->recallVar('last_template'));
$last_t = $this->Application->BaseURL().$index_file.'?'.ENV_VAR_NAME.'='.$env;
$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();
$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');
foreach ($req_fields as $field) {
$order->Fields[$field]['required'] = $has_tangibles;
}
if ($cs_helper->CountryHasStates( getArrayValue($field_values, 'ShippingCountry') )) {
$order->Fields['ShippingState']['required'] = true; // $has_tangibles
}
}
// billing address required fields
if ($this->Application->GetVar('check_billing_address')) {
$req_fields = array('BillingTo', 'BillingAddress1', 'BillingCity', 'BillingZip', 'BillingCountry', 'BillingPhone');
foreach ($req_fields as $field) {
$order->Fields[$field]['required'] = true;
}
if ($cs_helper->CountryHasStates( getArrayValue($field_values, 'BillingCountry') )) {
$order->Fields['BillingState']['required'] = true;
}
}
$check_cc = $this->Application->GetVar('check_credit_card');
$ord_event = $this->Application->GetVar($event->getPrefixSpecial().'_event');
if (($ord_event !== 'OnProceedToPreview') && !$this->Application->IsAdmin()) {
// don't check credit card when going from "billing info" to "order preview" step
$check_cc = 0;
}
if ($check_cc && ($field_values['PaymentType'] == $order->GetDBField('PaymentType'))) {
// cc check required AND payment type was not changed during SUBMIT
if ($this->Application->IsAdmin()) {
$req_fields = array('PaymentCardType', 'PaymentAccount', 'PaymentNameOnCard', 'PaymentCCExpDate');
}
else {
$req_fields = array('PaymentCardType', 'PaymentAccount', 'PaymentNameOnCard', 'PaymentCCExpDate', 'PaymentCVV2');
}
foreach ($req_fields as $field) {
$order->Fields[$field]['required'] = true;
}
}
}
/**
* Set's order's user_id to user from session or Guest otherwise
*
* @param kEvent $event
*/
function CheckUser(&$event)
{
if ( $this->Application->IsAdmin() ) return;
$order =& $event->GetObject();
$ses_user = $this->Application->RecallVar('user_id');
if ($order->GetDBField('PortalUserId') != $ses_user) {
if ($ses_user == 0) $ses_user = -2; //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 and populate it
* with items selected in the grid
*
* @param kEvent $event
*/
function OnPreCreate(&$event)
{
parent::OnPreCreate($event);
$object =& $event->getObject();
$new_number = $this->getNextOrderNumber($event);
$object->SetDBField('Number', $new_number);
$object->SetDBField('SubNumber', 0);
$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
*/
function 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 {
$new_number = $this->getNextOrderNumber($event);
$object->SetDBField('Number', $new_number);
$object->SetDBField('SubNumber', 0);
$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) );
$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));
$product_object->SwitchToLive();
$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);
$event->status = 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 = 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->FieldValues;
}
}
$order_items->GoNext();
}
return true;
}
function OnOrderPrint(&$event)
{
$event->redirect_params = Array('opener'=>'s');
}
/**
* 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();
// 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);
}
}
$this->finalizePopup($event);
}
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 = 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->FieldValues;
}
$order_items->GoNext();
}
return true;
}
function restoreOrder(&$order_items)
{
$product_object =& $this->Application->recallObject('p', null, Array('skip_autoload' => true));
$product_object->SwitchToLive();
$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();
$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');
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->FieldValues;
// using freed qty to fullfill possible backorders
$product_h->FullfillBackOrders($product_object, $inv_object->GetID());
}
else {
// using freed qty to fullfill 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)) {
return;
}
// process order products
$object =& $this->Application->recallObject($event->Prefix.'.-inv', null, Array('skip_autoload' => true));
$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)) {
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) );
$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 ;
}
// preparing new status, but not setting it yet
$object->SetDBField('Status', $event_status_map[$event->Name]);
$set_new_status = false;
$event->status = erSUCCESS;
$email_params = $this->OrderEmailParams($object);
switch ($event->Name) {
case 'OnMassOrderApprove':
case 'OnOrderApprove':
$set_new_status = false; //on succsessfull 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'] );
$charge_result = $gateway_object->Charge($object->FieldValues, $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));
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) {
$email_event_user =& $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);
}
$email_event_user =& $this->Application->EmailEventUser('ORDER.DENY', $object->GetDBField('PortalUserId'), $email_params);
if ($event->Name == 'OnMassOrderDeny' || $event->Name == 'OnOrderDeny') {
// inform payment gateway that order was declined
$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->OrderDeclined($object->FieldValues, $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':
- $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->FieldValues, $gw_data['gw_params']);
+
+ $ret = Array();
+ // try to create usps order
+ if ( $object->GetDBField('ShippingType') == 0 && strpos($object->GetDBField('ShippingInfo'), 'USPS')) {
+ $ses_usps_erros = Array();
+ $ret = $this->MakeUSPSOrder($object);
+ }
+
+ if ( !isset($ret['error_number']) ) {
+
+ $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->FieldValues, $gw_data['gw_params']);
+ }
+ else {
+ $usps_errors[$object->GetField('OrderNumber')] = $ret['error_description'];
+ $ses_usps_erros = Array();
+ $ses_usps_erros = unserialize($this->Application->RecallVar('usps_errors'));
+ if ( is_array($ses_usps_erros) ) $usps_errors = array_merge($usps_errors,$ses_usps_erros);
+ $this->Application->StoreVar('usps_errors', serialize($usps_errors));
+ }
+
break;
case 'OnMassOrderProcess':
case 'OnOrderProcess':
if ($this->ReadyToProcess($object->GetID())) {
$event->CallSubEvent('OnReserveItems');
if ($event->status == erSUCCESS) $set_new_status = true;
$email_event_user =& $this->Application->EmailEventUser('BACKORDER.PROCESS', $object->GetDBField('PortalUserId'), $email_params);
} else {
$event->status = 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);
}
/**
* Get next free order number
*
* @param kEvent $event
*/
function getNextOrderNumber(&$event)
{
$object =& $event->getObject();
$sql = 'SELECT MAX(Number) FROM '.$this->Application->GetLiveName($object->TableName);
return max($this->Conn->GetOne($sql) + 1, $this->Application->ConfigValue('Comm_Next_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' ? WHERE_FILTER : HAVING_FILTER;
$object->addFilter($filter_name, $filter_params['value'], $filter_type, 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
* @access public
*/
function OnAfterItemLoad(&$event)
{
// get user fields
$object =& $event->getObject();
$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');
$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'));
}
/**
* Enter description here...
*
* @param kEvent $event
*/
function OnBeforeItemUpdate(&$event)
{
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
$cs_helper->PopulateStates($event, 'ShippingState', 'ShippingCountry');
$cs_helper->PopulateStates($event, 'BillingState', 'BillingCountry');
$object = &$event->getObject();
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);
}
/**
* Apply any custom changes to list's sql query
*
* @param kEvent $event
* @access protected
* @see OnListBuild
*/
function SetCustomQuery(&$event)
{
$object =& $event->getObject();
$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->IsAdmin() )
{
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 As BackOrderFlag' : 'BackOrderFlag';
// setting PackageNum to 0 for Non-tangible items, for tangibles first package num is always 1
$query = ' SELECT OrderItemId
FROM '.$table_prefix.'OrderItems
LEFT JOIN '.TABLE_PREFIX.'Products
ON '.TABLE_PREFIX.'Products.ProductId = '.$table_prefix.'OrderItems.ProductId
WHERE '.TABLE_PREFIX.'Products.Type > 1 AND 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.',
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 BackOrderFlag, Grouping
ORDER BY BackOrderFlag 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->FieldValues);
$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['BackOrderFlag'] > 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.', oi.*
FROM '.TABLE_PREFIX.'OrderItems oi
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = oi.ProductId
WHERE (OrderId = %s) AND (BackOrderFlag = 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);
}
}
}
/**
* Updates product info in shopping cart
*
* @param kEvent $event
* @param unknown_type $prod_id
* @param unknown_type $back_order
* @param unknown_type $qty
* @param unknown_type $price
* @param unknown_type $discounted_price
* @param unknown_type $discount_type
* @param unknown_type $discount_id
* @param unknown_type $order_item_id
* @param unknown_type $options_salt
* @param unknown_type $passed_item_data
* @param unknown_type $cost
* @return unknown
*/
function UpdateOrderItem(&$event, $prod_id, $back_order, $qty, $price, $discounted_price, $discount_type, $discount_id, $order_item_id = 0, $options_salt = 0, $passed_item_data=null, $cost=0)
{
$price = (float) $price;
$discounted_price = (float) $discounted_price;
$qty = (int) $qty;
$ord_id = $this->getPassedId($event);
$table_prefix = $this->TablePrefix($event);
if($order_item_id)
{
$query = ' SELECT OrderItemId, Quantity, FlatPrice, Price, BackOrderFlag, ItemData FROM '.$table_prefix.'OrderItems
WHERE OrderItemId = '.$order_item_id;
}
else
{
// try to load specified Product by its Id and BackOrderFlag in the order
$query = 'SELECT OrderItemId, Quantity, FlatPrice, Price, BackOrderFlag, ItemData FROM '.$table_prefix.'OrderItems
WHERE
OrderId = '.$ord_id.'
AND
ProductId = '.$prod_id.'
AND
BackOrderFlag '.($back_order ? ' >= 1' : ' = 0').'
AND
OptionsSalt = '.$options_salt;
}
$item_row = $this->Conn->GetRow($query);
$item_id = $item_row['OrderItemId'];
$object =& $this->Application->recallObject('orditems.-item', null, Array('skip_autoload' => true));
$item_data = $item_row['ItemData'];
if($item_data)
{
$item_data = unserialize($item_data);
}
$orig_discount_type = (int)getArrayValue($item_data, 'DiscountType');
$orig_discount_id = (int)getArrayValue($item_data, 'DiscountId');
if ($item_id) { // if Product already exists in the order
if ($qty > 0 &&
$item_row['Quantity'] == $qty &&
round($item_row['FlatPrice'], 3) == round($price, 3) &&
round($item_row['Price'], 3) == round($discounted_price, 3) &&
$orig_discount_type == $discount_type &&
$orig_discount_id == $discount_id)
{
return false;
}
$object->Load($item_id);
if ($qty > 0) { // Update Price by _TOTAL_ qty
$object->SetDBField('Quantity', $qty);
$object->SetDBField('FlatPrice', $price );
$object->SetDBField('Price', $discounted_price );
$object->SetDBField('Cost', $cost);
if($item_data = $object->GetDBField('ItemData'))
{
$item_data = unserialize($item_data);
}
else
{
$item_data = Array();
}
$item_data['DiscountType'] = $discount_type;
$item_data['DiscountId'] = $discount_id;
$object->SetDBField('ItemData', serialize($item_data));
$object->Update();
}
else { // delete products with 0 qty
$object->Delete();
}
}
elseif ($qty > 0) { // if we are adding product
$product =& $this->Application->recallObject('p');
$product->Load($prod_id);
$object->SetDBField('ProductId', $prod_id);
$object->SetDBField('ProductName', $product->GetField('Name'));
$object->SetDBField('Quantity', $qty);
$object->SetDBField('FlatPrice', $price );
$object->SetDBField('Price', $discounted_price );
$object->SetDBField('Cost', $cost);
$object->SetDBField('OrderId', $ord_id);
$object->SetDBField('BackOrderFlag', $back_order);
if ($passed_item_data && !is_array($passed_item_data)) {
$passed_item_data = unserialize($passed_item_data);
}
// $item_data = Array('DiscountType' => $discount_type, 'DiscountId' => $discount_id);
$item_data = $passed_item_data;
$object->SetDBField('ItemData', serialize($item_data));
$object->Create();
if( $this->UseTempTables($event) ) $object->SetTempId();
}
else {
return false; // item requiring to set qty to 0, meaning already does not exist
}
return true;
}
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));
$product->Load($item_id);
$object =& $this->Application->recallObject('orditems.-item', null, Array('skip_autoload' => true));
$order =& $this->Application->recallObject('ord');
$ord_id = $order->GetID();
if($item_data = $event->getEventParam('ItemData'))
{
$item_data = unserialize($item_data);
}
else
{
$item_data = Array();
}
$options = getArrayValue($item_data, 'Options');
if (!$this->CheckOptions($event, $options, $item_id, $qty, $product->GetDBField('OptionsSelectionMode'))) return;
// Checking if such product already exists in the cart
$keys['OrderId'] = $ord_id;
$keys['ProductId'] = $product->GetId();
if (isset($item_data['Options'])) {
$options_salt = $this->OptionsSalt($item_data['Options']);
$keys['OptionsSalt'] = $options_salt;
}
else {
$options_salt = null;
}
$exists = $object->Load($keys);
$object->SetDBField('ProductId', $product->GetId());
$object->SetDBField('ProductName', $product->GetField('l'.$this->Application->GetDefaultLanguageId().'_Name'));
$object->SetDBField('Weight', $product->GetDBField('Weight'));
if (isset($item_data['Options'])) {
$object->SetDBField('OptionsSalt', $options_salt);
}
if (isset($package_num)) {
$object->SetDBField('PackageNum', $package_num);
}
if($product->GetDBField('Type') == PRODUCT_TYPE_TANGIBLE || $product->GetDBField('Type') == 6)
{
$object->SetDBField('Quantity', $object->GetDBField('Quantity') + $qty);
}
else // Types: 2,3,4
{
$object->SetDBField('Quantity', $qty); // 1
$exists = false;
}
if (isset($item_data['ForcePrice'])) {
$price = $item_data['ForcePrice'];
}
else {
$price = $this->GetPlainProductPrice($product->GetId(), $object->GetDBField('Quantity'), $product->GetDBField('Type'), $order, $options_salt, $item_data);
}
$cost = $this->GetProductCost($product->GetId(), $object->GetDBField('Quantity'), $product->GetDBField('Type'), $options_salt, $item_data);
$object->SetDBField('FlatPrice', $price);
$couponed_price = $this->GetCouponDiscountedPrice($order->GetDBField('CouponId'), $product->GetId(), $price);
$discounted_price = $this->GetDiscountedProductPrice($product->GetId(), $price, $discount_id, $order);
if( $couponed_price < $discounted_price )
{
$discounted_price = $couponed_price;
$discount_type = 'coupon';
$discount_id = $order->GetDBField('CouponId');
}
else
{
$discount_type = 'discount';
$discount_id = $discount_id;
}
$item_data['DiscountType'] = $discount_type;
$item_data['DiscountId'] = $discount_id;
$item_data['IsRecurringBilling'] = $product->GetDBField('IsRecurringBilling');
// it item is processed in order using new style, then put such mark in orderitem record
$processing_data = $product->GetDBField('ProcessingData');
if ($processing_data) {
$processing_data = unserialize($processing_data);
if (getArrayValue($processing_data, 'HasNewProcessing')) {
$item_data['HasNewProcessing'] = 1;
}
}
$object->SetDBField('ItemData', serialize($item_data));
$object->SetDBField('Price', $discounted_price); // will be retrieved later
$object->SetDBField('Cost', $cost);
$object->SetDBField('BackOrderFlag', 0); // it will be updated in OnRecalculateItems later if needed
$object->SetDBField('OrderId', $ord_id);
if ($exists) {
if ($qty > 0) {
$object->Update();
}
else {
$object->Delete();
}
}
else {
$object->Create();
if ($this->UseTempTables($event)) {
$object->setTempID();
}
}
$this->Application->HandleEvent($ord_event, 'ord:OnRecalculateItems');
/*if ($ord_event->getEventParam('RecalculateChangedCart') && !$this->Application->IsAdmin() ) {
$event->SetRedirectParam('checkout_error', $ord_event->redirect_params['checkout_error']);
}*/
}
/**
* 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();
$ord_id = $object->GetId();
$shipping_option = $object->GetDBField('ShippingOption');
$backorder_select = $shipping_option == 0 ? '0 As BackOrderFlag' : 'BackOrderFlag';
$table_prefix = $this->TablePrefix($event);
$shipping_info = $object->GetDBField('ShippingInfo') ? unserialize( $object->GetDBField('ShippingInfo') ) : false;
$shipping_total = 0;
$insurance_fee = 0;
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 quantityes.
* 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($checkout_error = $this->Application->GetVar('set_checkout_error'))
{
$event->SetRedirectParam('checkout_error', $checkout_error);
}
$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;
}
$table_prefix = $this->TablePrefix($event);
// process only tangible products here
$poc_table = $this->Application->getUnitOption('poc', 'TableName');
$query = ' SELECT oi.ProductId, oi.OptionsSalt, oi.ItemData, SUM(oi.Quantity) AS Quantity,
IF(p.InventoryStatus = 2, poc.QtyInStock, p.QtyInStock) AS QtyInStock,
p.QtyInStockMin, p.BackOrder, p.InventoryStatus
FROM '.$table_prefix.'OrderItems AS oi
LEFT JOIN '.TABLE_PREFIX.'Products AS p ON oi.ProductId = p.ProductId
LEFT JOIN '.$poc_table.' poc ON (poc.CombinationCRC = oi.OptionsSalt) AND (oi.ProductId = poc.ProductId)
WHERE (oi.OrderId = '.$ord_id.') AND (p.Type = 1)
GROUP BY oi.ProductId, OptionsSalt';
$items = $this->Conn->Query($query);
$result = false;
$cost_total = 0;
$sub_total = 0;
$sub_total_flat = 0;
$coupon_discount = 0;
$pending_operations = Array();
$backordering = $this->Application->ConfigValue('Comm_Enable_Backordering');
$coupon_id = $order->GetDBField('CouponId');
foreach ($items as $row) {
$a_item_data = isset($row['ItemData']) ? unserialize($row['ItemData']) : Array();
$min_qty = $this->GetMinQty($row['ProductId']);
if ($row['Quantity'] > 0 && $row['Quantity'] < $min_qty) {
$row['Quantity'] = $min_qty;
$event->SetRedirectParam('checkout_error', 6);
}
$back_order = 0;
$to_order = 0;
if (!$row['InventoryStatus']) {
$available = $row['Quantity']*2; // always available;
}
else {
// if there are not enough qty AND backorder is auto or backorder is always
$available = $row['QtyInStock'] - $row['QtyInStockMin'];
$available = max(0, $available); // just in case
}
if (
$backordering && // backordering generally enabled
(
($row['Quantity'] > $available)
&&
($row['BackOrder'] == 2) //auto
)
||
$row['BackOrder'] == 1 // always
)
{ // split order into order & backorder
if ($row['BackOrder'] == 1) { //Always backorder
$available = 0;
$to_order = 0;
$back_order = $row['Quantity'];
}
else { //Auto
$to_order = $available;
$back_order = $row['Quantity'] - $available;
}
if (isset($a_item_data['ForcePrice'])) {
$price = $a_item_data['ForcePrice'];
}
else {
$price = $this->GetPlainProductPrice( $row['ProductId'], $to_order + $back_order, 1, $order, $row['OptionsSalt'], $row['ItemData'] );
}
$cost = $this->GetProductCost( $row['ProductId'], $to_order + $back_order, 1, $row['OptionsSalt'], $row['ItemData'] );
$discounted_price = $this->GetDiscountedProductPrice( $row['ProductId'], $price, $discount_id, $order );
$couponed_price = $this->GetCouponDiscountedPrice( $coupon_id, $row['ProductId'], $price );
if($couponed_price < $discounted_price)
{
$discounted_price = $couponed_price;
$coupon_discount += ($price - $couponed_price) * ($to_order + $back_order);
$discount_type = 'coupon';
$discount_id = $coupon_id;
}
else
{
$discount_type = 'discount';
}
$pending_operations[] = Array( $row['ProductId'], 0, $to_order, $price, $discounted_price, $discount_type, $discount_id, 0, $row['OptionsSalt'], $row['ItemData'], $cost );
$pending_operations[] = Array( $row['ProductId'], 1, $back_order, $price, $discounted_price, $discount_type, $discount_id, 0, $row['OptionsSalt'], $row['ItemData'], $cost);
}
else { // store as normal order (and remove backorder)
// we could get here with backorder=never then we should order only what's available
$to_order = min($row['Quantity'], $available);
if (isset($a_item_data['ForcePrice'])) {
$price = $a_item_data['ForcePrice'];
}
else {
$price = $this->GetPlainProductPrice( $row['ProductId'], $to_order + $back_order, 1, $order, $row['OptionsSalt'], $row['ItemData'] );
}
$cost = $this->GetProductCost( $row['ProductId'], $to_order + $back_order, 1, $row['OptionsSalt'], $row['ItemData'] );
$discounted_price = $this->GetDiscountedProductPrice( $row['ProductId'], $price, $discount_id, $order );
$couponed_price = $this->GetCouponDiscountedPrice( $coupon_id, $row['ProductId'], $price );
if($couponed_price < $discounted_price)
{
$discounted_price = $couponed_price;
$coupon_discount += ($price - $couponed_price) * ($to_order + $back_order);
$discount_type = 'coupon';
$discount_id = $coupon_id;
}
else
{
$discount_type = 'discount';
}
$pending_operations[] = Array( $row['ProductId'], 0, $to_order, $price, $discounted_price, $discount_type, $discount_id, 0, $row['OptionsSalt'], $row['ItemData'], $cost );
$pending_operations[] = Array( $row['ProductId'], 1, 0, $price, $discounted_price, $discount_type, $discount_id, 0, $row['OptionsSalt'], $row['ItemData'], $cost ); // this removes backorders
if ($to_order < $row['Quantity']) { // has changed
if ($to_order > 0) {
$event->SetRedirectParam('checkout_error', 2);
}
else {
$event->SetRedirectParam('checkout_error', 3);
}
$result = true;
}
}
$sub_total_flat += ($to_order + $back_order) * $price;
$sub_total += ($to_order + $back_order) * $discounted_price;
$cost_total += ($to_order + $back_order) * $cost;
}
// process subscriptions, services and downloadable: begin
$poc_table = $this->Application->getUnitOption('poc', 'TableName');
$query = ' SELECT oi.OrderItemId, oi.ProductId, oi.Quantity, oi.OptionsSalt, oi.ItemData,
IF(p.InventoryStatus = 2, poc.QtyInStock, p.QtyInStock) AS QtyInStock,
p.QtyInStockMin, p.BackOrder, p.InventoryStatus, p.Type
FROM '.$table_prefix.'OrderItems AS oi
LEFT JOIN '.TABLE_PREFIX.'Products AS p ON oi.ProductId = p.ProductId
LEFT JOIN '.$poc_table.' poc ON (poc.CombinationCRC = oi.OptionsSalt) AND (oi.ProductId = poc.ProductId)
WHERE (oi.OrderId = '.$ord_id.') AND (p.Type IN (2,3,4,5,6))';
$items = $this->Conn->Query($query);
foreach ($items as $row)
{
$a_item_data = isset($row['ItemData']) ? unserialize($row['ItemData']) : Array();
if (isset($a_item_data['ForcePrice'])) {
$price = $a_item_data['ForcePrice'];
}
else {
$price = $this->GetPlainProductPrice( $row['ProductId'], $row['Quantity'], $row['Type'], $order, $row['OptionsSalt'], $row['ItemData'] );
}
$cost = $this->GetProductCost( $row['ProductId'], $row['Quantity'], $row['Type'], $row['OptionsSalt'], $row['ItemData'] );
$discounted_price = $this->GetDiscountedProductPrice( $row['ProductId'], $price, $discount_id, $order );
$couponed_price = $this->GetCouponDiscountedPrice( $coupon_id, $row['ProductId'], $price );
if($couponed_price < $discounted_price)
{
$discounted_price = $couponed_price;
$coupon_discount += ($price - $couponed_price);
$discount_type = 'coupon';
$discount_id = $coupon_id;
}
else
{
$discount_type = 'discount';
}
$pending_operations[] = Array( $row['ProductId'], 0, $row['Quantity'], $price, $discounted_price, $discount_type, $discount_id, $row['OrderItemId'], 0, $row['ItemData'], $cost );
$sub_total_flat += $price * $row['Quantity'];
$sub_total += $discounted_price * $row['Quantity'];
$cost_total += $cost * $row['Quantity'];
}
// process subscriptions, services and downloadable: end
$flat_discount = $this->GetWholeOrderPlainDiscount($global_discount_id, $order);
$flat_discount = ($flat_discount < $sub_total_flat) ? $flat_discount : $sub_total_flat;
$coupon_flat_discount = $this->GetWholeOrderCouponDiscount($coupon_id);
$coupon_flat_discount = ($coupon_flat_discount < $sub_total_flat) ? $coupon_flat_discount : $sub_total_flat;
if($coupon_flat_discount && $coupon_flat_discount > $flat_discount)
{
$flat_discount = $coupon_flat_discount;
$global_discount_type = 'coupon';
$global_discount_id = $coupon_id;
}
else
{
$global_discount_type = 'discount';
}
if($sub_total_flat - $sub_total < $flat_discount)
{
$coupon_discount = ($flat_discount == $coupon_flat_discount) ? $flat_discount : 0;
$sub_total = $sub_total_flat - $flat_discount;
foreach ($pending_operations as $operation_row)
{
list($product_id, $backorder, $qty, $price, $discounted_price, $dummy, $dummy, $order_item_id, $options_salt, $item_data, $cost) = $operation_row;
$new_price = ($price / $sub_total_flat) * $sub_total;
$result = $this->UpdateOrderItem($event, $product_id, $backorder, $qty, $price, $new_price, $global_discount_type, $global_discount_id, $order_item_id, $options_salt, $item_data, $cost) || $result;
}
}
else
{
foreach ($pending_operations as $operation_row)
{
list($product_id, $backorder, $qty, $price, $discounted_price, $discount_type, $discount_id, $order_item_id, $options_salt, $item_data, $cost) = $operation_row;
$result = $this->UpdateOrderItem($event, $product_id, $backorder, $qty, $price, $discounted_price, $discount_type, $discount_id, $order_item_id, $options_salt, $item_data, $cost) || $result;
}
}
$order->SetDBField('SubTotal', $sub_total);
$order->SetDBField('CostTotal', $cost_total);
// $this->CalculateDiscount($event);
$order->SetDBField('DiscountTotal', $sub_total_flat - $sub_total);
if($coupon_id && $coupon_discount == 0)
{
$this->RemoveCoupon($order);
$event->SetRedirectParam('checkout_error', 8);
}
$order->SetDBField('CouponDiscount', $coupon_discount);
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', 1);
}
if ($result && is_object($event->MasterEvent) && $event->MasterEvent->Name == 'OnUserLogin')
{
if( ($shop_cart_template = $this->Application->GetVar('shop_cart_template'))
&& is_object($event->MasterEvent->MasterEvent) )
{
$event->MasterEvent->MasterEvent->SetRedirectParam('checkout_error', 9);
$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'];
}*/
function GetMinQty($p_id)
{
$query = 'SELECT
MIN(pp.MinQty)
FROM '.TABLE_PREFIX.'ProductsPricing AS pp
WHERE pp.ProductId = '.$p_id;
$min_qty = $this->Conn->GetOne($query);
if (!$min_qty) return 1;
return $min_qty;
}
/**
* Return product cost for given qty, taking no discounts into account
*
* @param int $p_id ProductId
* @param int $qty Quantity
* @return float
*/
function GetProductCost($p_id, $qty, $product_type, $options_salt=null, $item_data=null)
{
$user_groups = $this->Application->RecallVar('UserGroups');
if($product_type == 1)
{
// $where_clause = 'pp.ProductId = '.$p_id.' AND pp.MinQty <= '.$qty;
// $orderby_clause = 'ORDER BY ('.$qty.' - pp.MinQty) ASC';
$where_clause = 'GroupId IN ('.$user_groups.') AND pp.ProductId = '.$p_id.' AND pp.MinQty <= '.$qty.' AND ('.$qty.' < pp.MaxQty OR pp.MaxQty=-1)';
$orderby_clause = 'ORDER BY pp.Price ASC';
}
else
{
$price_id = $this->GetPricingId($p_id, $item_data);
$where_clause = 'pp.ProductId = '.$p_id.' AND pp.PriceId = '.$price_id;
$orderby_clause = '';
}
$sql = 'SELECT Cost
FROM '.TABLE_PREFIX.'ProductsPricing AS pp
LEFT JOIN '.TABLE_PREFIX.'Products AS p
ON p.ProductId = pp.ProductId
WHERE '.$where_clause.'
'.$orderby_clause;
// GROUP BY pp.ProductId - removed, this it qty pricing is caclucated incorrectly !!!
$cost = $this->Conn->GetOne($sql);
if (!$cost) $price = 0;
return $cost;
}
/**
* Return product price for given qty, taking no discounts into account
*
* @param int $p_id ProductId
* @param int $qty Quantity
* @return float
*/
function GetPlainProductPrice($p_id, $qty, $product_type, &$order_object, $options_salt=null, $item_data=null)
{
$user_id = $order_object->GetDBField('PortalUserId');
$user_groups = $this->Application->getUserGroups($user_id);
if($product_type == 1)
{
// $where_clause = 'pp.ProductId = '.$p_id.' AND pp.MinQty <= '.$qty;
// $orderby_clause = 'ORDER BY ('.$qty.' - pp.MinQty) ASC';
$where_clause = 'GroupId IN ('.$user_groups.') AND pp.ProductId = '.$p_id.' AND pp.MinQty <= '.$qty.' AND ('.$qty.' < pp.MaxQty OR pp.MaxQty=-1)';
// if we have to stick ti primary group this order by clause force its pricing to go first,
// but if there is no pricing for primary group it will take next optimal
if ($this->Application->ConfigValue('Comm_PriceBracketCalculation') == 1){
if ($user_id <= 0) {
$primary_group = $this->Application->ConfigValue('User_LoggedInGroup'); // actually this is Everyone
}
else {
$primary_group = $this->Conn->GetOne('SELECT GroupId FROM '.TABLE_PREFIX.'UserGroup WHERE PortalUserId='.$user_id.' AND PrimaryGroup=1');
}
$orderby_clause = 'ORDER BY (IF(GroupId='.$primary_group.',1,2)) ASC, pp.Price ASC';
}
else {
$orderby_clause = 'ORDER BY pp.Price ASC';
}
}
else
{
$price_id = $this->GetPricingId($p_id, $item_data);
$where_clause = 'pp.ProductId = '.$p_id.' AND pp.PriceId = '.$price_id;
$orderby_clause = '';
}
$sql = 'SELECT Price
FROM '.TABLE_PREFIX.'ProductsPricing AS pp
LEFT JOIN '.TABLE_PREFIX.'Products AS p
ON p.ProductId = pp.ProductId
WHERE '.$where_clause.'
'.$orderby_clause;
// GROUP BY pp.ProductId - removed, this it qty pricing is caclucated incorrectly !!!
$price = $this->Conn->GetOne($sql);
if (!$price) $price = 0;
if (isset($item_data) && !is_array($item_data)) {
$item_data = unserialize($item_data);
}
if (isset($item_data['Options'])) {
$addtion = 0;
$opt_helper =& $this->Application->recallObject('kProductOptionsHelper');
foreach ($item_data['Options'] as $opt => $val) {
$data = $this->Conn->GetRow('SELECT * FROM '.TABLE_PREFIX.'ProductOptions WHERE ProductOptionId = '.$opt);
$parsed = $opt_helper->ExplodeOptionValues($data);
if (!$parsed) continue;
$conv_prices = $parsed['Prices'];
$conv_price_types = $parsed['PriceTypes'];
if (is_array($val)) {
foreach ($val as $a_val) {
if (isset($conv_prices[unhtmlentities($a_val)]) && $conv_prices[unhtmlentities($a_val)]) {
if ($conv_price_types[unhtmlentities($a_val)] == '$') {
$addtion += $conv_prices[unhtmlentities($a_val)];
}
elseif ($conv_price_types[unhtmlentities($a_val)] == '%') {
$addtion += $price * $conv_prices[unhtmlentities($a_val)] / 100;
}
}
}
}
else {
if (isset($conv_prices[unhtmlentities($val)]) && $conv_prices[unhtmlentities($val)]) {
if ($conv_price_types[unhtmlentities($val)] == '$') {
$addtion += $conv_prices[unhtmlentities($val)];
}
elseif ($conv_price_types[unhtmlentities($val)] == '%') {
$addtion += $price * $conv_prices[unhtmlentities($val)] / 100;
}
}
}
}
$price += $addtion;
}
$comb_salt = $this->OptionsSalt( getArrayValue($item_data, 'Options'), 1);
if ($comb_salt) {
$query = 'SELECT * FROM '.TABLE_PREFIX.'ProductOptionCombinations WHERE CombinationCRC = '.$comb_salt;
$comb = $this->Conn->GetRow($query);
if ($comb) {
switch ($comb['PriceType']) {
case 1: // = override
$price = $comb['Price'];
break;
case 2: // flat
$price = $price + $comb['Price'];
break;
case 3: // percent
$price = $price * (1 + $comb['Price'] / 100);
break;
}
}
}
return max($price, 0);
}
/**
* Return product price for given qty, taking possible discounts into account
*
* @param int $p_id ProductId
* @param int $qty Quantity
* @return float
*/
function GetDiscountedProductPrice($p_id, $price, &$discount_id, &$order_object)
{
$discount_id = 0;
$user_id = $order_object->GetDBField('PortalUserId');
$user_groups = $this->Application->getUserGroups($user_id);
$sql = '
SELECT
IF(pd.Type = 1,
'.$price.' - pd.Amount,
IF(pd.Type = 2,
('.$price.' * (1-pd.Amount/100)),
'.$price.'
)
) AS DiscountedPrice,
pd.DiscountId
FROM '.TABLE_PREFIX.'Products AS p
LEFT JOIN '.TABLE_PREFIX.'ProductsDiscountItems AS pdi ON
pdi.ItemResourceId = p.ResourceId OR pdi.ItemType = 0
LEFT JOIN '.TABLE_PREFIX.'ProductsDiscounts AS pd ON
pd.DiscountId = pdi.DiscountId
AND
(pdi.ItemType = 1 OR (pdi.ItemType = 0 AND pd.Type = 2))
AND
pd.Status = 1
AND
( pd.GroupId IN ('.$user_groups.') AND
( (pd.Start IS NULL OR pd.Start < UNIX_TIMESTAMP())
AND
(pd.End IS NULL OR pd.End > UNIX_TIMESTAMP())
)
)
WHERE p.ProductId = '.$p_id.' AND pd.DiscountId IS NOT NULL
';
$pricing = $this->Conn->GetCol($sql, 'DiscountId');
if (!$pricing) return $price;
$discounted_price = min($pricing);
$pricing = array_flip($pricing);
$discount_id = $pricing[$discounted_price];
$discounted_price = min($discounted_price, $price);
return max($discounted_price, 0);
}
function GetCouponDiscountedPrice($coupon_id, $p_id, $price)
{
if(!$coupon_id) return $price;
$sql = '
SELECT
'.$price.' AS Price,
MIN(IF(pc.Type = 1,
'.$price.' - pc.Amount,
IF(pc.Type = 2,
('.$price.' * (1-pc.Amount/100)),
'.$price.'
)
)) AS DiscountedPrice
FROM '.TABLE_PREFIX.'Products AS p
LEFT JOIN '.TABLE_PREFIX.'ProductsCouponItems AS pci ON
pci.ItemResourceId = p.ResourceId OR pci.ItemType = 0
LEFT JOIN '.TABLE_PREFIX.'ProductsCoupons AS pc ON
pc.CouponId = pci.CouponId
AND
(pci.ItemType = 1 OR (pci.ItemType = 0 AND pc.Type = 2))
WHERE p.ProductId = '.$p_id.' AND pci.CouponId = '.$coupon_id.'
GROUP BY p.ProductId
';
$pricing = $this->Conn->GetRow($sql);
if ($pricing === false) return $price;
$price = min($pricing['Price'], $pricing['DiscountedPrice']);
return max($price, 0);
}
function GetWholeOrderPlainDiscount(&$discount_id, &$order_object)
{
$user_id = $order_object->GetDBField('PortalUserId');
$user_groups = $this->Application->getUserGroups($user_id);
$sql = '
SELECT pd.Amount AS Discount, pd.DiscountId
FROM '.TABLE_PREFIX.'ProductsDiscountItems AS pdi
LEFT JOIN '.TABLE_PREFIX.'ProductsDiscounts AS pd
ON
pd.DiscountId = pdi.DiscountId
AND
pdi.ItemType = 0 AND pd.Type = 1
AND
pd.Status = 1
AND
( pd.GroupId IN ('.$user_groups.') AND
( (pd.Start IS NULL OR pd.Start < '.$order_object->GetDBField('OrderDate').')
AND
(pd.End IS NULL OR pd.End > '.$order_object->GetDBField('OrderDate').')
)
)
WHERE pd.DiscountId IS NOT NULL
';
$pricing = $this->Conn->GetCol($sql, 'DiscountId');
if (!$pricing) return 0;
$discounted_price = max($pricing);
$pricing = array_flip($pricing);
$discount_id = $pricing[$discounted_price];
return max($discounted_price, 0);
}
function GetWholeOrderCouponDiscount($coupon_id)
{
if (!$coupon_id) return 0;
$sql = 'SELECT Amount
FROM '.TABLE_PREFIX.'ProductsCouponItems AS pci
LEFT JOIN '.TABLE_PREFIX.'ProductsCoupons AS pc
ON pc.CouponId = pci.CouponId
WHERE pci.CouponId = '.$coupon_id.' AND pci.ItemType = 0 AND pc.Type = 1';
return $this->Conn->GetOne($sql);
}
/**
* 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++;
}
}
}
-
+
function UpdateShippingTypes(&$event)
{
$object =& $this->Application->recallObject($event->getPrefixSpecial());
$ord_id = $object->GetId();
$order_info = $this->Application->GetVar('ord');
$shipping_ids = getArrayValue($order_info, $ord_id, 'ShippingTypeId');
+
if (!$shipping_ids)
{
return;
}
$last_shippings = unserialize($this->Application->RecallVar('LastShippings'));
$shipping_types = Array();
+
+ $ret = true;
foreach($shipping_ids as $package => $id)
{
+ // try to validate
+ if ( $object->GetDBField('ShippingType') == 0 && ereg('USPS', $id) && in_array($this->Application->GetVar('t'), Array('in-commerce/checkout/shipping','in-commerce/orders/orders_edit_shipping'))) {
+ $current_usps_shipping_types = unserialize($this->Application->RecallVar('current_usps_shipping_types'));
+ $object->SetDBField('ShippingInfo', serialize(Array($package => $current_usps_shipping_types[$id])));
+ $usps_data = $this -> MakeUSPSOrder( $object, true);
+ if ( !isset($usps_data['error_number']) ) {
+ // update only international shipping
+ if ( $object->GetDBField('ShippingCountry') != 'USA') {
+ $last_shippings[$package][$id]['TotalCost'] = $usps_data['Postage'];
+ }
+ }
+ else {
+ $this->Application->SetVar('usps_errors', $usps_data['error_description']);
+ $ret = false;
+ }
+ $object->SetDBField('ShippingInfo', '');
+ }
$shipping_types[$package] = $last_shippings[$package][$id];
}
$object->SetDBField('ShippingInfo', serialize($shipping_types));
- return;
+ 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();
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();
$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) );
$idfield = $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, $idfield, $id) );
$prefix_special = $event->Prefix.'.'.$this->getSpecialByType($order_status);
$orders_list =& $this->Application->recallObject($prefix_special, $event->Prefix.'_List', Array('per_page'=>-1) );
$orders_list->Query();
foreach($orders_list->Records as $row_num => $record)
{
if( $record[$idfield] == $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 unknown_type $event
*/
function OnResetToPending(&$event)
{
$object =& $event->getObject( Array('skip_autoload' => true) );
$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=erSUCCESS;
}
else
{
$event->status=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);
}
/**
* Regular event: 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 == 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);
}
$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'));
$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.';
}
}
function OnAfterConfigRead(&$event)
{
$calc_fields = $this->Application->getUnitOption($event->Prefix, 'CalculatedFields');
foreach ($calc_fields as $special => $fields) {
$calc_fields[$special]['OrderNumber'] = str_replace('6', $this->Application->ConfigValue('Comm_Order_Number_Format_P'), $calc_fields[$special]['OrderNumber']);
$calc_fields[$special]['OrderNumber'] = str_replace('3', $this->Application->ConfigValue('Comm_Order_Number_Format_S'), $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'.$this->Application->ConfigValue('Comm_Order_Number_Format_P').'d', $fields['Number']['format']);
$fields['SubNumber']['format'] = str_replace('%03d', '%0'.$this->Application->ConfigValue('Comm_Order_Number_Format_S').'d', $fields['SubNumber']['format']);
if (!$this->Application->IsAdmin()) {
$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;
}
$fields['PaymentType']['options_sql'] .= ' AND ';
$fields['PaymentType']['options_sql'] .= ' (PortalGroups LIKE "%%,'.implode(',%%" OR PortalGroups LIKE "%%,', $user_groups).',%%")';
}
$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_recursive2($columns, $new_columns);
}
function OnSave(&$event)
{
$res = parent::OnSave($event);
if ($event->status == erSUCCESS) {
$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);
}
}
return $res;
}
/**
* 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->IsAdmin()) {
return true;
}
$object =& $event->getObject();
if (!$object->isLoaded()) {
return true;
}
return $object->GetDBField('PortalUserId') == $this->Application->RecallVar('user_id');
}
// ===== Gift Certificates Related =====
function OnRemoveGiftCertificate(&$event)
{
$object =& $event->getObject();
$this->RemoveGiftCertificate($object);
$event->CallSubEvent('OnRecalculateItems');
$event->SetRedirectParam('checkout_error', 107);
}
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);
}
+
+
+ function MakeUSPSOrder(&$object, $fake_mode=false)
+ {
+ /* @var $object OrdersItem */
+
+ $this->Application->recallObject('ShippingQuoteEngine');
+ /* @var $aUSPS USPS */
+ $aUSPS = $this->Application->recallObject('USPS', 'USPS');
+
+ $ShippingInfo = unserialize($object->GetDBField('ShippingInfo'));
+ $ShippingCode = $USPSMethod = '';
+ $ShippingCountry = $aUSPS->GetUSPSCountry($object->GetDBField('ShippingCountry'));
+
+ $UserName = explode(" ", $object->GetDBField('ShippingTo'));
+
+ $item_table = TABLE_PREFIX.'OrderItems';
+ if ( $this->Application->IsAdmin() ) {
+ $order_table = $object->TableName;
+ $item_table = str_replace('Orders', 'OrderItems', $order_table);
+ }
+
+ $sOrder = Array (
+ 'FirstName' => $UserName[0],
+ 'LastName' => $UserName[1],
+ 'ShippingCompany' => $object->GetDBField('ShippingCompany'),
+ 'ShippingAddress1' => $object->GetDBField('ShippingAddress1'),
+ 'ShippingAddress2' => $object->GetDBField('ShippingAddress2'),
+ 'ShippingCity' => $object->GetDBField('ShippingCity'),
+ 'ShippingZip' => $object->GetDBField('ShippingZip'),
+ 'ShippingCountry' => $ShippingCountry,
+ 'ShippingPhone' => $aUSPS->PhoneClean($object->GetDBField('ShippingPhone')),
+ 'ShippingFax' => $aUSPS->PhoneClean($object->GetDBField('ShippingFax')),
+ 'ShippingNumBoxes' => '1',
+ );
+
+ $sql = sprintf('SELECT SUM(`Quantity` * `Weight`) FROM %s WHERE %s = %s ',
+ $item_table,
+ $object->IDField,
+ $object->GetID()
+ );
+ $weight = $this->Application->Conn->GetOne($sql);
+ $f_weight = Kg2Pounds($weight);
+ $sOrder['ShippingWeight'] = $f_weight[0].'.'.$f_weight[1];
+
+ foreach ($ShippingInfo as $k => $ShippingRow) $ShippingCode = $ShippingRow['Code'];
+
+ if ( $object->GetDBField('ShippingCountry') == 'USA' ) {
+ $sOrder['ShippingState'] = $object->GetDBField('ShippingState');
+ $USPSMethod = $ShippingCode;
+ unset($sOrder['ShippingZip']);
+ $sOrder['ShippingZip5'] = substr(trim($object->GetDBField('ShippingZip')), 0, 5);
+ $sOrder['ShippingZip4'] = '';
+ $sOrder['SubTotal'] = $object->GetDBField('SubTotal');
+ }
+ else {
+ $USPSMethod = array_search($ShippingCode, $aUSPS->intl_types);
+ $sOrder['ShippingProvince'] = '';
+
+ if ( $ShippingCountry == 'CA' ) {
+ $sOrder['ShippingProvince'] = $object->GetField('ShippingState');
+ }
+
+ // add items
+ $sql = sprintf('SELECT `Quantity`, `Weight`, `Price` FROM %s WHERE %s = %s ',
+ $item_table,
+ $object->IDField,
+ $object->GetID()
+ );
+ $order_items = $this->Application->Conn->Query($sql);
+ $Items = Array();
+ $i = 1;
+
+ foreach ( $order_items as $k => $order_item ) {
+ $p_weight = Array();
+ $p_weight = Kg2Pounds($order_item['Weight']);
+ $Items[$i] = Array('Qty' => $order_item['Quantity'], 'Price' => $order_item['Price'], 'NetPounds' => $p_weight[0], 'NetOunces' => $p_weight[1]);
+ $i++;
+ }
+
+ $sOrder['Items'] = $Items;
+ $sOrder['InvoiceNumber'] = $object->GetDBField('OrderNumber');
+ }
+
+ $sOrder['ShippingService'] = $USPSMethod;
+
+ // make USPS order
+ $aUSPS -> order = $sOrder;
+ $usps_data = $aUSPS -> PostOrder();
+
+ // if errors
+ if ( isset($usps_data['error_number']) ) return $usps_data;
+
+ if ( isset($usps_data['Postage'])) {
+ $ShippingPrice = '';
+ $ShippingPrice = $usps_data['Postage'];
+ }
+
+ $ShippingTracking = '';
+
+ if ( isset($usps_data['TrackingNumber']) && $usps_data['TrackingNumber'] != '' ) $ShippingTracking = $usps_data['TrackingNumber'];
+ if ( isset($usps_data['PostnetBarCode']) && $usps_data['PostnetBarCode'] != '' && $ShippingTracking == '' ) $ShippingTracking = $usps_data['PostnetBarCode'];
+
+ if ( $fake_mode == false ) {
+ $object->SetDBField('ShippingTracking', $ShippingTracking);
+ $object->Update();
+ }
+ else {
+ $full_path = USPS_LABEL_FOLDER.$ShippingTracking.".pdf";
+ @unlink($full_path);
+ }
+ return $usps_data;
+ }
+
+ function OnDownloadLabel(&$event)
+ {
+ ini_set('memory_limit','300M');
+ ini_set('max_execution_time','0');
+
+ $object =& $event->getObject();
+ $file = $object->GetDBField('ShippingTracking').'.pdf';
+ $full_path = USPS_LABEL_FOLDER.$file;
+ if( file_exists($full_path) AND is_file($full_path)) {
+ $mime = function_exists('mime_content_type') ? mime_content_type($full_path) : 'application/download';
+ header('Content-type: '.$mime);
+ header('Content-Disposition: attachment; filename="'.$file.'"');
+ readfile($full_path);
+ define('DBG_SKIP_REPORTING', 1);
+ die();
+ }
+ }
+
}
?>
\ No newline at end of file
Property changes on: branches/RC/in-commerce/units/orders/orders_event_handler.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.150.2.17
\ No newline at end of property
+1.150.2.18
\ No newline at end of property
Index: branches/RC/in-commerce/units/orders/orders_tag_processor.php
===================================================================
--- branches/RC/in-commerce/units/orders/orders_tag_processor.php (revision 11628)
+++ branches/RC/in-commerce/units/orders/orders_tag_processor.php (revision 11629)
@@ -1,1410 +1,1436 @@
<?php
class OrdersTagProcessor extends kDBTagProcessor
{
/**
* Print location using only filled in fields
*
* @param Array $params
* @access public
*/
function PrintLocation($params)
{
$object =& $this->getObject($params);
$type = getArrayValue($params,'type');
if($type == 'Company')
{
return $this->PrintCompanyLocation($params);
}
$fields = Array('City','State','Zip','Country');
$ret = '';
foreach($fields as $field)
{
$value = $object->GetField($type.$field);
if ($field == 'Country' && $value) $ret .= '<br/>';
if($value) $ret .= $value.', ';
}
return rtrim($ret,', ');
}
function PrintCompanyLocation($params)
{
$fields = Array('City','State','ZIP','Country');
$ret = '';
foreach($fields as $field)
{
$value = $this->Application->ConfigValue('Comm_'.$field);
if($field == 'Country')
{
$sql = 'SELECT DestName
FROM '.TABLE_PREFIX.'StdDestinations
WHERE DestAbbr = '.$this->Conn->qstr($value);
$value = $this->Application->Phrase( $this->Conn->GetOne($sql) );
}
if ($field == 'Country' && $value) $ret .= '<br/>';
if($value) $ret .= $value.', ';
}
return rtrim($ret,', ');
}
function Orditems_LinkRemoveFromCart($params)
{
return $this->Application->HREF($this->Application->GetVar('t'), '', Array('pass' => 'm,orditems,ord', 'ord_event' => 'OnRemoveFromCart', 'm_cat_id'=>0));
}
function Orderitems_ProductLink($params)
{
$object =& $this->Application->recallObject('orditems');
$url_params = Array (
'p_id' => $object->GetDBField('ProductId'),
'pass' => 'm,p',
);
return $this->Application->HREF($params['template'], '', $url_params);
}
function Orderitems_ProductExists($params)
{
$object =& $this->Application->recallObject('orditems');
return $object->GetDBField('ProductId') > 0;
}
function PrintCart($params)
{
$o = '';
$params['render_as'] = $params['item_render_as'];
$o_items = $this->Application->ProcessParsedTag(rtrim('orditems.'.$this->Special, '.'), 'PrintList', array_merge($params, Array(
'per_page' => -1
)) );
if ($o_items){
$cart_params = array('name' => $params['header_render_as']);
$o = $this->Application->ParseBlock($cart_params);
$o .= $o_items;
$cart_params = array('name' => $params['footer_render_as']);
$o .= $this->Application->ParseBlock($cart_params);
}else {
$cart_params = array('name' => $params['empty_cart_render_as']);
$o = $this->Application->ParseBlock($cart_params);
}
return $o;
}
function ShopCartForm($params)
{
return $this->Application->ProcessParsedTag('m', 'ParseBlock', array_merge($params, Array(
'name' => 'kernel_form', 'PrefixSpecial'=>'ord'
)) );
}
function BackOrderFlag($params)
{
$object =& $this->Application->recallObject('orditems');
return $object->GetDBField('BackOrderFlag');
}
function OrderIcon($params){
$object =& $this->Application->recallObject('orditems');
if ($object->GetDBField('BackOrderFlag')==0){
return $params['ordericon'];
}else{
return $params['backordericon'];
}
}
function Status($params)
{
$status_map = Array(
'incomplete' => ORDER_STATUS_INCOMPLETE,
'pending' => ORDER_STATUS_PENDING,
'backorder' => ORDER_STATUS_BACKORDERS,
'toship' => ORDER_STATUS_TOSHIP,
'processed' => ORDER_STATUS_PROCESSED,
'denied' => ORDER_STATUS_DENIED,
'archived' => ORDER_STATUS_ARCHIVED,
);
$object =& $this->getObject($params);
$status = $object->GetDBField('Status');
$result = true;
if (isset($params['is'])) {
$result = $result && ($status == $status_map[$params['is']]);
}
if (isset($params['is_not'])) {
$result = $result && ($status != $status_map[$params['is_not']]);
}
return $result;
}
function ItemsInCart($params)
{
$object =& $this->getObject($params);
if ($object->GetDBField('Status') != ORDER_STATUS_INCOMPLETE) {
return 0;
}
$object =& $this->Application->recallObject('orditems', 'orditems_List');
return $object->RecordsCount;
}
function CartNotEmpty($params)
{
$object =& $this->getObject($params);
if ($object->GetDBField('Status') != ORDER_STATUS_INCOMPLETE) {
return 0;
}
$order_id = $this->Application->RecallVar('ord_id');
if ($order_id) {
$sql = 'SELECT COUNT(*)
FROM '.TABLE_PREFIX.'OrderItems
WHERE OrderId = '.$order_id;
return $this->Conn->GetOne($sql);
}
return 0;
}
function CartIsEmpty($params)
{
return $this->CartNotEmpty($params) ? false : true;
}
function CartHasBackorders($params)
{
$object =& $this->getObject($params);
$different_types = $this->Conn->GetCol('SELECT COUNT(*) FROM '.TABLE_PREFIX.'OrderItems WHERE OrderId = '.$object->GetID().' GROUP BY BackOrderFlag');
return count($different_types) > 1;
}
function PrintShippings($params)
{
$o = '';
$object =& $this->getObject($params);
$ord_id = $object->GetId();
$shipping_option = $object->GetDBField('ShippingOption');
$backorder_select = $shipping_option == 0 ? '0 As BackOrderFlag' : 'BackOrderFlag';
$order_items =& $this->Application->recallObject('orditems', 'orditems_List', Array('skip_autoload' => true) );
$oi_table = $order_items->TableName;
list($split_shipments, $limit_types) = $this->GetShippingLimitations($ord_id);
foreach ($split_shipments as $group => $data)
{
$query = 'UPDATE '.$oi_table.' SET SplitShippingGroup = '.$group.'
WHERE ProductId IN ('.implode(',', $data['Products']).')';
$this->Conn->Query($query);
$limitations_cache[$group] = $data['Types'];
}
$shipping_group_option = $object->GetDBField('ShippingGroupOption');
$shipping_group_select = $shipping_group_option == 0 ? '0 AS SplitShippingGroup' : 'SplitShippingGroup';
if (count($split_shipments) > 1) {
$this->Application->SetVar('shipping_limitations_apply', 1);
// different shipping limitations apply
if ($limit_types == 'NONE') {
// order can't be shipped with single shipping type
$this->Application->SetVar('shipping_limitations_apply', 2);
$shipping_group_select = 'SplitShippingGroup';
$shipping_group_option = 1;
}
}
else {
$this->Application->SetVar('shipping_limitations_apply', 0);
}
$weight_sql = 'IF(oi.Weight IS NULL, 0, oi.Weight * oi.Quantity)';
$query = 'SELECT
'.$backorder_select.',
oi.ProductName,
oi.ShippingTypeId,
SUM(oi.Quantity) AS TotalItems,
SUM('.$weight_sql.') AS TotalWeight,
SUM(oi.Price * oi.Quantity) AS TotalAmount,'.
// calculate free Totals => SUM(ALL) - SUM(PROMO) '
'SUM(oi.Quantity) - SUM(IF(p.MinQtyFreePromoShipping > 0 AND p.MinQtyFreePromoShipping <= oi.Quantity, oi.Quantity, 0)) AS TotalItemsPromo,
SUM('.$weight_sql.') - SUM(IF(p.MinQtyFreePromoShipping > 0 AND p.MinQtyFreePromoShipping <= oi.Quantity, '.$weight_sql.', 0)) AS TotalWeightPromo,
SUM(oi.Price * oi.Quantity) - SUM(IF(p.MinQtyFreePromoShipping > 0 AND p.MinQtyFreePromoShipping <= oi.Quantity, oi.Price * oi.Quantity, 0)) AS TotalAmountPromo,
'.$shipping_group_select.'
FROM '.$oi_table.' oi
LEFT JOIN '.$this->Application->getUnitOption('p', 'TableName').' p
ON oi.ProductId = p.ProductId
WHERE oi.OrderId = '.$ord_id.' AND p.Type = 1
GROUP BY BackOrderFlag, SplitShippingGroup
ORDER BY BackOrderFlag ASC, SplitShippingGroup ASC';
$shipments = $this->Conn->Query($query);
$block_params = Array();
$block_params['name'] = $this->SelectParam($params, 'render_as,block');
$block_params['user_country_id'] = $object->GetDBField('ShippingCountry');
$block_params['user_state_id'] = $object->GetDBField('ShippingState');
$block_params['user_zip'] = $object->GetDBField('ShippingZip');
$block_params['user_city'] = $object->GetDBField('ShippingCity');
$block_params['user_addr1'] = $object->GetDBField('ShippingAddress1');
$block_params['user_addr2'] = $object->GetDBField('ShippingAddress2');
$block_params['user_name'] = $object->GetDBField('ShippingTo');
if( ($block_params['user_addr1'] == '' || $block_params['user_city'] == '' ||
$block_params['user_zip'] == '' || $block_params['user_country_id'] == '') &&
getArrayValue($params, 'invalid_address_render_as'))
{
$block_params['name'] = $params['invalid_address_render_as'];
return $this->Application->ParseBlock($block_params);
}
$group = 1;
foreach ($shipments as $shipment) {
$where = array('OrderId = '.$ord_id);
if ($shipping_group_option != 0) {
$where[] = 'SplitShippingGroup = '.$shipment['SplitShippingGroup'];
}
if ($shipping_option > 0) { // not all together
$where[] = 'BackOrderFlag = '.$shipment['BackOrderFlag'];
}
$query = 'UPDATE '.$oi_table.' SET PackageNum = '.$group.'
'.($where ? 'WHERE '.implode(' AND ', $where) : '');
$this->Conn->Query($query);
$group++;
}
$this->Application->RemoveVar('LastShippings');
$group = 1;
$this->Application->SetVar('ShipmentsExists', 1);
foreach ($shipments as $shipment) {
$block_params['package_num'] = $group;
$block_params['limit_types'] = strpos($shipping_group_select, '0 AS') !== false ? $limit_types : $limitations_cache[$shipment['SplitShippingGroup']];
$this->Application->SetVar('ItemShipmentsExists', 1);
switch ($shipment['BackOrderFlag']) {
case 0:
if ( $this->CartHasBackOrders(Array()) && $shipping_option == 0 ) {
$block_params['shipment'] = $this->Application->Phrase('lu_all_available_backordered');
}
else {
$block_params['shipment'] = $this->Application->Phrase('lu_ship_all_available');;
}
break;
case 1:
$block_params['shipment'] = $this->Application->Phrase('lu_ship_all_backordered');;
break;
default:
$block_params['shipment'] = $this->Application->Phrase('lu_ship_backordered');
break;
}
$block_params['promo_weight_metric'] = $shipment['TotalWeightPromo'];
$block_params['promo_amount'] = $shipment['TotalAmountPromo'];
$block_params['promo_items'] = $shipment['TotalItemsPromo'];
$block_params['weight_metric'] = $shipment['TotalWeight'];
$block_params['weight'] = $shipment['TotalWeight'];
$regional =& $this->Application->recallObject('lang.current');
if ($block_params['weight_metric'] == '')
{
$block_params['weight'] = $this->Application->Phrase('lu_NotAvailable');
}
elseif ($regional->GetDBField('UnitSystem') == 1)
{
$block_params['weight'] .= ' '.$this->Application->Phrase('lu_kg');
}
elseif ($regional->GetDBField('UnitSystem') == 2)
{
list($pounds, $ounces) = Kg2Pounds($block_params['weight']);
$block_params['weight'] = $pounds.' '.$this->Application->Phrase('lu_pounds').' '.
$ounces.' '.$this->Application->Phrase('lu_ounces');
}
$block_params['items'] = $shipment['TotalItems'];
$iso = $this->GetISO($params['currency']);
$amount = $this->ConvertCurrency($shipment['TotalAmount'], $iso);
$amount = sprintf("%.2f", $amount);
// $block_params['amount'] = $this->AddCurrencySymbol($amount, $iso);
$block_params['amount'] = $shipment['TotalAmount'];
$block_params['field_name'] = $this->InputName(Array('field' => 'ShippingTypeId')).'['.($group).']';
$parsed_block = $this->Application->ParseBlock($block_params);
if($this->Application->GetVar('ItemShipmentsExists'))
{
$o .= $parsed_block;
}
else
{
$this->Application->SetVar('ShipmentsExists', 0);
if(getArrayValue($params, 'no_shipments_render_as'))
{
$block_params['name'] = $params['no_shipments_render_as'];
return $this->Application->ParseBlock($block_params);
}
}
$group++;
}
if(getArrayValue($params, 'table_header_render_as'))
{
$o = $this->Application->ParseBlock( Array('name' => $params['table_header_render_as']) ).$o;
}
if(getArrayValue($params, 'table_footer_render_as'))
{
$o .= $this->Application->ParseBlock( Array('name' => $params['table_footer_render_as']) );
}
return $o;
}
function GetShippingLimitations($ord_id)
{
/*$query = 'SELECT
c.CachedShippingLimitation
FROM '.TABLE_PREFIX.'OrderItems AS oi
LEFT JOIN '.TABLE_PREFIX.'Products AS p
ON p.ProductId = oi.ProductId
LEFT JOIN '.TABLE_PREFIX.'CategoryItems AS ci
ON ci.ItemResourceId = p.ResourceId
LEFT JOIN '.TABLE_PREFIX.'Category AS c
ON c.CategoryId = ci.CategoryId
WHERE
oi.OrderId = '.$ord_id.'
AND
ci.PrimaryCat = 1
AND
c.CachedShippingMode = 1;';
$cat_limitations = $this->Conn->GetCol($query);*/
$cat_limitations = array();
$query = 'SELECT ShippingLimitation, ShippingMode, oi.ProductId as ProductId
FROM '.TABLE_PREFIX.'Products AS p
LEFT JOIN '.TABLE_PREFIX.'OrderItems AS oi ON
oi.ProductId = p.ProductId
WHERE oi.OrderId = '.$ord_id.' AND p.Type = 1'; // .' AND p.ShippingMode = 1';
$limitations = $this->Conn->Query($query, 'ProductId');
$split_shipments = array();
$limit = false;
$types_index = array();
// group products by shipping type range and caculate intersection of all types available for ALL products
// the intersaction caclulation is needed to determine if the order can be shipped with single type or not
if ($limitations) {
$limit_types = null;
foreach ($limitations as $product_id => $row)
{
// if shipping types are limited - get the types
$types = $row['ShippingLimitation'] != '' ? explode('|', substr($row['ShippingLimitation'], 1, -1)) : array('ANY');
// if shipping is NOT limited to selected types (default - so products with no limitations at all also counts)
if ($row['ShippingMode'] == 0) {
array_push($types, 'ANY'); // can be shipped with ANY (literally) type
$types = array_unique($types);
}
//adding product id to split_shipments group by types range
$i = array_search(serialize($types), $types_index);
if ($i === false) {
$types_index[] = serialize($types);
$i = count($types_index)-1;
}
$split_shipments[$i]['Products'][] = $product_id;
$split_shipments[$i]['Types'] = serialize($types);
if ($limit_types == null) { //it is null only when we process first item with limitations
$limit_types = $types; //initial scope
}
// this is to avoid ANY intersect CUST_1 = (), but allows ANY intersect CUST_1,ANY = (ANY)
if (in_array('ANY', $limit_types) && !in_array('ANY', $types)) {
array_splice($limit_types, array_search('ANY', $limit_types), 1, $types);
}
// this is to avoid CUST_1 intersect ANY = (), but allows CUST_1 intersect CUST_1,ANY = (ANY)
if (!in_array('ANY', $limit_types) && in_array('ANY', $types)) {
array_splice($types, array_search('ANY', $types), 1, $limit_types);
}
$limit_types = array_intersect($limit_types, $types);
}
$limit_types = count($limit_types) > 0 ? serialize(array_unique($limit_types)) : 'NONE';
}
return array($split_shipments, $limit_types);
}
function PaymentTypeForm($params)
{
$object =& $this->getObject($params);
$payment_type_id = $object->GetDBField('PaymentType');
if($payment_type_id)
{
$this->Application->SetVar('pt_id', $payment_type_id);
$block_params['name'] = $this->SelectParam($params, $this->UsingCreditCard($params) ? 'cc_render_as,block_cc' : 'default_render_as,block_default' );
return $this->Application->ParseBlock($block_params);
}
return '';
}
/**
* Returns true in case if credit card was used as payment type for order
*
* @param Array $params
* @return bool
*/
function UsingCreditCard($params)
{
$object =& $this->getObject($params);
$pt = $object->GetDBField('PaymentType');
if (!$pt) {
$pt = $this->Conn->GetOne('SELECT PaymentTypeId FROM '.TABLE_PREFIX.'PaymentTypes WHERE IsPrimary = 1');
$object->SetDBField('PaymentType', $pt);
}
$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 ) );
$sql = 'SELECT RequireCCFields FROM %s WHERE GatewayId = %s';
return $this->Conn->GetOne( sprintf($sql, TABLE_PREFIX.'Gateways', $gw_id) );
}
function PaymentTypeDescription($params)
{
return $this->Application->ProcessParsedTag('pt', 'Field', array_merge($params, Array(
'field' => 'Description'
)) );
}
function PaymentTypeInstructions($params)
{
return $this->Application->ProcessParsedTag('pt', 'Field', array_merge($params, Array(
'field' => 'Instructions'
)) );
}
function PrintMonthOptions($params)
{
$object =& $this->getObject($params);
$date = explode('/', $object->GetDBField($params['date_field_name']));
if (!$date || sizeof($date) != 2) {
$date=array("", "");
}
$o = '';
$params['name'] = $params['block'];
for ($i = 1; $i <= 12; $i++) {
$month_str = str_pad($i, 2, "0", STR_PAD_LEFT);
if ($date[0] == $month_str) {
$params['selected'] = ' selected';
}else {
$params['selected'] = '';
}
$params['mm'] = $month_str;
$o .= $this->Application->ParseBlock($params);
}
return $o;
}
function PrintYearOptions($params)
{
$object =& $this->getObject($params);
$value = $object->GetDBField( $params['field'] );
$block_params = $this->prepareTagParams($params);
$block_params['name'] = $this->SelectParam($params, 'render_as,block');
$o = '';
$this_year = adodb_date('y');
for($i = $this_year; $i <= $this_year + 10; $i++)
{
$year_str = str_pad($i, 2, '0', STR_PAD_LEFT);
$block_params['selected'] = ($value == $year_str) ? $params['selected'] : '';
$block_params['key'] = $year_str;
$block_params['option'] = $year_str;
$o .= $this->Application->ParseBlock($block_params);
}
return $o;
}
function PrintMyOrders($params)
{
}
/**
* Checks, that order data can be editied based on it's status
*
* @param Array $params
* @return bool
*/
function OrderEditable($params)
{
$id_field = $this->Application->getUnitOption($this->Prefix, 'IDField');
$table_name = $this->Application->getUnitOption($this->Prefix, 'TableName');
if ($this->Application->IsTempMode($this->Prefix, $this->Special)) {
$table_name = $this->Application->GetTempName($table_name, 'prefix:' . $this->Prefix);
}
// use direct select here (not $this->getObject) because this tag is used even before "combined_header" block is used
$sql = 'SELECT Status, PaymentType
FROM ' . $table_name . '
WHERE ' . $id_field . ' = ' . $this->Application->GetVar( $this->getPrefixSpecial() . '_id' );
$order_data = $this->Conn->GetRow($sql);
if (!$order_data) {
// when order data not found -> really impossible, because this tag is used only on order editing templates
return false;
}
switch ( $order_data['Status'] ) {
case ORDER_STATUS_INCOMPLETE:
$ret = true;
break;
case ORDER_STATUS_PENDING:
case ORDER_STATUS_BACKORDERS:
$sql = 'SELECT PlacedOrdersEdit
FROM ' . $this->Application->getUnitOption('pt', 'TableName') . '
WHERE ' . $this->Application->getUnitOption('pt', 'IDField') . ' = ' . $order_data['PaymentType'];
$ret = $this->Conn->GetOne($sql);
break;
default:
$ret = false;
break;
}
return $ret;
}
function CheckoutSteps($params)
{
$steps = explode(',', $params['steps']);
foreach ($steps as $key => $item)
{
$templates[$key] = trim($item);
}
$templates = explode(',', $params['templates']);
foreach ($templates as $key => $item)
{
$templates[$key] = trim($item);
}
$total_steps = count($templates);
$t = $this->Application->GetVar('t');
$o = '';
$block_params = array();
$i = 0;
$passed_current = preg_match("/".preg_quote($templates[count($templates)-1], '/')."/", $t);
foreach ($steps as $step => $name)
{
if (preg_match("/".preg_quote($templates[$step], '/')."/", $t)) {
$block_params['name'] = $this->SelectParam($params, 'current_step_render_as,block_current_step');
$passed_current = true;
}
else {
$block_params['name'] = $passed_current ? $this->SelectParam($params, 'render_as,block') : $this->SelectParam($params, 'passed_step_render_as,block_passed_step');
}
$block_params['title'] = $this->Application->Phrase($name);
$block_params['template'] = $templates[$i];
$block_params['template_link'] = $this->Application->HREF($templates[$step], '', Array('pass'=>'m'));
$block_params['next_step_template'] = isset($templates[$i + 1]) ? $templates[$i + 1] : '';
$block_params['number'] = $i + 1;
$i++;
$o.= $this->Application->ParseBlock($block_params, 1);
}
return $o;
}
function ShowOrder($params){
$order_params = $this->prepareTagParams($params);
// $order_params['Special'] = 'myorders';
// $order_params['PrefixSpecial'] = 'ord.myorders';
$order_params['name'] = $this->SelectParam($order_params, 'render_as,block');
// $this->Application->SetVar('ord.myorders_id', $this->Application->GetVar('ord_id'));
$object =& $this->getObject($params);
if (!$object->GetDBField('OrderId')) {
return;
}
return $this->Application->ParseBlock($order_params);
}
function BuildListSpecial($params)
{
if ($this->Special != '') {
return $this->Special;
}
$list_unique_key = $this->getUniqueListKey($params);
if ($list_unique_key == '') {
return parent::BuildListSpecial($params);
}
return crc32($list_unique_key);
}
function ListOrders($params){
$o = '';
$params['render_as'] = $params['item_render_as'];
$o_orders = $this->PrintList2($params);
if ($o_orders){
$orders_params = array('name' => $params['header_render_as']);
$o = $this->Application->ParseBlock($orders_params);
$o .= $o_orders;
}else {
$orders_params = array('name' => $params['empty_myorders_render_as']);
$o = $this->Application->ParseBlock($orders_params);
}
return $o;
}
function HasRecentOrders($params)
{
$per_page = $this->SelectParam($params, 'per_page,max_items');
if ($per_page !== false) {
$params['per_page'] = $per_page;
}
return (int)$this->TotalRecords($params) > 0 ? 1 : 0;
}
function ListOrderItems($params)
{
$prefix_special = rtrim('orditems.'.$this->Special, '.');
return $this->Application->ProcessParsedTag($prefix_special, 'PrintList', array_merge($params, Array(
'per_page' => -1
)) );
}
function OrdersLink(){
$params['pass']='m,ord';
$main_processor =& $this->Application->RecallObject('m_TagProcessor');
return $main_processor->Link($params);
}
function PrintAddresses($params)
{
$object =& $this->getObject($params);
$address_list =& $this->Application->recallObject('addr','addr_List', Array('per_page'=>-1, 'skip_counting'=>true) );
$address_list->Query();
$address_id = $this->Application->GetVar($params['type'].'_address_id');
if (!$address_id) {
$sql = 'SELECT '.$address_list->IDField.'
FROM '.$address_list->TableName.'
WHERE PortalUserId = '.$object->GetDBField('PortalUserId').' AND LastUsedAs'.ucfirst($params['type']).' = 1';
$address_id = (int)$this->Conn->GetOne($sql);
}
$ret = '';
$block_params = $this->prepareTagParams($params);
$block_params['name'] = $this->SelectParam($params, 'render_as,block');
$address_list->GoFirst();
while (!$address_list->EOL()) {
$selected = ($address_list->GetID() == $address_id);
if ($selected && $address_list->GetDBField('IsProfileAddress')) {
$this->Application->SetVar($this->Prefix.'_IsProfileAddress', true);
}
$block_params['key'] = $address_list->GetID();
$block_params['value'] = $address_list->GetDBField('ShortAddress');
$block_params['selected'] = $selected ? ' selected="selected"' : '';
$ret .= $this->Application->ParseBlock($block_params, 1);
$address_list->GoNext();
}
return $ret;
}
function PrefillRegistrationFields($params)
{
if( $this->Application->GetVar('fields_prefilled') ) return false;
$order_prefix = $params['type'] == 'billing' ? 'Billing' : 'Shipping';
$order_fields = Array('To','Company','Phone','Fax','Email','Address1','Address2','City','State','Zip','Country');
$user =& $this->Application->recallObject('u.current');
$order_id = $this->Application->RecallVar('front_order_id');
if($order_id) $this->Application->SetVar( $this->getPrefixSpecial().'_id', $order_id );
$order =& $this->getObject($params);
$names = explode(' ', $order->GetDBField($order_prefix.'To'), 2);
if(!$user->GetDBField('FirstName')) $user->SetDBField('FirstName', getArrayValue($names, 0) );
if(!$user->GetDBField('LastName')) $user->SetDBField('LastName', getArrayValue($names, 1) );
if(!$user->GetDBField('Company')) $user->SetDBField('Company', $order->GetDBField($order_prefix.'Company') );
if(!$user->GetDBField('Phone')) $user->SetDBField('Phone', $order->GetDBField($order_prefix.'Phone') );
if(!$user->GetDBField('Fax')) $user->SetDBField('Fax', $order->GetDBField($order_prefix.'Fax') );
if(!$user->GetDBField('Email')) $user->SetDBField('Email', $order->GetDBField($order_prefix.'Email') );
if(!$user->GetDBField('Street')) $user->SetDBField('Street', $order->GetDBField($order_prefix.'Address1') );
if(!$user->GetDBField('Street2')) $user->SetDBField('Street2', $order->GetDBField($order_prefix.'Address2') );
if(!$user->GetDBField('City')) $user->SetDBField('City', $order->GetDBField($order_prefix.'City') );
if(!$user->GetDBField('State')) $user->SetDBField('State', $order->GetDBField($order_prefix.'State') );
if(!$user->GetDBField('Zip')) $user->SetDBField('Zip', $order->GetDBField($order_prefix.'Zip') );
if(!$user->GetDBField('Country')) $user->SetDBField('Country', $order->GetDBField($order_prefix.'Country') );
$cs_helper =& $this->Application->recallObject('CountryStatesHelper');
$cs_helper->PopulateStates( new kEvent('u:OnBuild') , 'State', 'Country');
}
function UserLink($params)
{
$object =& $this->getObject($params);
$user_id = $object->GetDBField( $params['user_field'] );
if ($user_id) {
$url_params = Array (
'm_opener' => 'd',
'u_mode' => 't',
'u_event' => 'OnEdit',
'u_id' => $user_id,
'pass' => 'all,u'
);
return $this->Application->HREF($params['edit_template'], '', $url_params);
}
}
function UserFound($params)
{
$virtual_users = Array(-1,-2, 0);
$object =& $this->getObject($params);
return !in_array( $object->GetDBField( $params['user_field'] ) , $virtual_users );
}
/**
* Returns a link for editing order
*
* @param Array $params
* @return string
*/
function OrderLink($params)
{
$object =& $this->getObject($params);
$url_params = Array (
'm_opener' => 'd',
$this->Prefix.'_mode' => 't',
$this->Prefix.'_event' => 'OnEdit',
$this->Prefix.'_id' => $object->GetID(),
'pass' => 'all,'.$this->Prefix
);
return $this->Application->HREF($params['edit_template'], '', $url_params);
}
function HasOriginalAmount($params)
{
$object =& $this->getObject($params);
$original_amount = $object->GetDBField('OriginalAmount');
return $original_amount && ($original_amount != $object->GetDBField('TotalAmount') );
}
/**
* Returns true, when order has tangible items
*
* @param Array $params
* @return bool
*
* @todo This is copy from OrdersItem::HasTangibleItems. Copy to helper (and create it) and use here.
*/
function OrderHasTangibleItems($params)
{
$object =& $this->getObject($params);
$sql = 'SELECT COUNT(*)
FROM '.TABLE_PREFIX.'OrderItems orditems
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = orditems.ProductId
WHERE (orditems.OrderId = '.$object->GetID().') AND (p.Type = '.PRODUCT_TYPE_TANGIBLE.')';
return $this->Conn->GetOne($sql) ? true : false;
}
function ShipmentsExists($params)
{
return $this->Application->GetVar('ShipmentsExists') ? 1 : 0;
}
function Field($params)
{
$value = parent::Field($params);
$field = $this->SelectParam($params,'name,field');
if( ($field == 'PaymentAccount') && getArrayValue($params,'masked') )
{
$value = str_repeat('X',12).substr($value,-4);
}
return $value;
}
function CartHasError($params)
{
return $this->Application->GetVar('checkout_error') > 0;
}
function CheckoutError($params)
{
$error_codes = Array (
1 => 'state_changed',
2 => 'qty_unavailable',
3 => 'outofstock',
4 => 'invalid_code',
5 => 'code_expired',
6 => 'min_qty',
7 => 'code_removed',
8 => 'code_removed_automatically',
9 => 'changed_after_login',
10 => 'coupon_applied',
104 => 'invalid_gc_code',
105 => 'gc_code_expired',
107 => 'gc_code_removed',
108 => 'gc_code_removed_automatically',
110 => 'gift_certificate_applied',
);
$error_param = $error_codes[ $this->Application->GetVar('checkout_error') ];
return $this->Application->Phrase($params[$error_param]);
}
function GetFormAction($params)
{
$object =& $this->getObject($params);
/* @var $object OrdersItem */
$gw_data = $object->getGatewayData($params['payment_type_id']);
$this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
$gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
/* @var $gateway_object kGWBase */
return $gateway_object->getFormAction($gw_data['gw_params']);
}
function GetFormHiddenFields($params)
{
$object =& $this->getObject($params);
/* @var $object OrdersItem */
$gw_data = $object->getGatewayData(array_key_exists('payment_type_id', $params) ? $params['payment_type_id'] : null);
$this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
$gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
$tpl = '<input type="hidden" name="%s" value="%s" />'."\n";
$hidden_fields = $gateway_object->getHiddenFields($object->FieldValues, $params, $gw_data['gw_params']);
$ret = '';
if (!is_array($hidden_fields)) {
return $hidden_fields;
}
foreach($hidden_fields as $hidden_name => $hidden_value)
{
$ret .= sprintf($tpl, $hidden_name, $hidden_value);
}
return $ret;
}
function NeedsPlaceButton($params)
{
$object =& $this->getObject($params);
$gw_data = $object->getGatewayData();
$this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
$gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
return $gateway_object->NeedPlaceButton($object->FieldValues, $params, $gw_data['gw_params']);
}
function HasGatewayError($params)
{
return $this->Application->RecallVar('gw_error');
}
function ShowGatewayError($params)
{
$ret = $this->Application->RecallVar('gw_error');
$this->Application->RemoveVar('gw_error');
return $ret;
}
function ShippingType($params)
{
$object =& $this->getObject($params);
$shipping_info = unserialize( $object->GetDBField('ShippingInfo') );
if (count($shipping_info) > 1) {
return $this->Application->Phrase('lu_MultipleShippingTypes');
}
$shipping_info = array_shift($shipping_info);
return $shipping_info['ShippingName'];
}
function DiscountHelpLink($params)
{
$params['pass'] = 'all,orditems';
$params['m_cat_id'] = 0;
$m_tag_processor =& $this->Application->recallObject('m_TagProcessor');
return $m_tag_processor->Link($params);
}
function DiscountField($params)
{
$orditems =& $this->Application->recallObject( 'orditems' );
$item_data = $orditems->GetDBField('ItemData');
if(!$item_data) return '';
$item_data = unserialize($item_data);
$discount_prefix = ($item_data['DiscountType'] == 'coupon') ? 'coup' : 'd';
$discount =& $this->Application->recallObject($discount_prefix, null, Array('skip_autoload' => true));
if(!$discount->isLoaded())
{
$discount->Load($item_data['DiscountId']);
}
return $discount->GetField( $this->SelectParam($params, 'field,name') );
}
function HasDiscount($params)
{
$object =& $this->getObject($params);
return (float)$object->GetDBField('DiscountTotal') ? 1 : 0;
}
/**
* Allows to check if required product types are present in order
*
* @param Array $params
*/
function HasProductType($params)
{
$product_types = Array('tangible' => 1, 'subscription' => 2, 'service' => 3, 'downloadable' => 4, 'package' => 5, 'gift' => 6);
$object =& $this->getObject($params);
$sql = 'SELECT COUNT(*)
FROM '.TABLE_PREFIX.'OrderItems oi
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = oi.ProductId
WHERE (oi.OrderId = '.$object->GetID().') AND (p.Type = '.$product_types[ $params['type'] ].')';
return $this->Conn->GetOne($sql);
}
function PrintSerializedFields($params)
{
$object =& $this->getObject($params);
$field = $this->SelectParam($params, 'field');
if (!$field) $field = $this->Application->GetVar('field');
$data = unserialize($object->GetDBField($field));
$o = '';
$block_params['name'] = $params['render_as'];
foreach ($data as $field => $value) {
$block_params['field'] = $field;
$block_params['value'] = $value;
$o .= $this->Application->ParseBlock($block_params);
}
return $o;
}
function OrderProductEmail($params)
{
$order =& $this->Application->recallObject('ord');
$orditems =& $this->Application->recallObject('orditems');
$sql = 'SELECT ResourceId
FROM '.TABLE_PREFIX.'Products
WHERE ProductId = '.$orditems->GetDBField('ProductId');
$resource_id = $this->Conn->GetOne($sql);
$ml_formatter =& $this->Application->recallObject('kMultiLanguage');
$custom_fields = $this->Application->getUnitOption('p', 'CustomFields');
$custom_name = $ml_formatter->LangFieldName('cust_'.array_search($params['msg_custom_field'], $custom_fields));
$sql = 'SELECT '.$custom_name.'
FROM '.$this->Application->getUnitOption('p-cdata', 'TableName').'
WHERE ResourceId = '.$resource_id;
$message_template = $this->Conn->GetOne($sql);
if (!$message_template || trim($message_template) == '') {
// message template missing
return ;
}
$from_name = strip_tags($this->Application->ConfigValue('Site_Name'));
$from_email = $this->Application->ConfigValue('Smtp_AdminMailFrom');
$to_name = $order->GetDBField('BillingTo');
$to_email = $order->GetDBField('BillingEmail');
if (!$to_email) {
// billing email is empty, then use user's email
$sql = 'SELECT Email
FROM '.$this->Application->getUnitOption('u', 'TableName').'
WHERE PortalUserId = '.$order->GetDBField('PortalUserId');
$to_email = $this->Conn->GetOne($sql);
}
$esender =& $application->recallObject('EmailSender.-product');
/* @var $esender kEmailSendingHelper */
$esender->SetFrom($from_email, $from_name);
$esender->AddTo($to_email, $to_name);
$email_events_eh =& $this->Application->recallObject('emailevents_EventHandler');
/* @var $email_events_eh EmailEventsEventsHandler */
list ($message_headers, $message_body) = $email_events_eh->ParseMessageBody($message_template, Array());
if (!trim($message_body)) {
// message body missing
return false;
}
foreach ($message_headers as $header_name => $header_value) {
$esender->SetEncodedHeader($header_name, $header_value);
}
$esender->SetHTML($message_body);
$esender->Deliver();
}
function PrintTotals($params)
{
$order =& $this->getObject($params);
$totals = array();
if (ABS($order->GetDBField('SubTotal') - $order->GetDBField('AmountWithoutVAT')) > 0.01) {
$totals[] = 'products';
}
$has_tangible = $this->OrderHasTangibleItems($params);
if ($has_tangible && $order->GetDBField('ShippingTaxable')) {
$totals[] = 'shipping';
}
if ($order->GetDBField('ProcessingFee') > 0 && $order->GetDBField('ProcessingTaxable')) {
$totals[] = 'processing';
}
if ($order->GetDBField('ReturnTotal') > 0 && $order->GetDBField('ReturnTotal')) {
$totals[] = 'return';
}
$totals[] = 'sub_total';
if ($order->GetDBField('VAT') > 0) {
$totals[] = 'vat';
}
if ($has_tangible && !$order->GetDBField('ShippingTaxable')) {
$totals[] = 'shipping';
}
if ($order->GetDBField('ProcessingFee') > 0 && !$order->GetDBField('ProcessingTaxable')) {
$totals[] = 'processing';
}
$o = '';
foreach ($totals as $type)
{
if ($element = getArrayValue($params, $type.'_render_as')) {
$o .= $this->Application->ParseBlock( array('name' => $element), 1 );
}
}
return $o;
}
function ShowDefaultAddress($params)
{
$address_type = ucfirst($params['type']);
if ($this->Application->GetVar('check_'.strtolower($address_type).'_address')) {
// form type doesn't match check type, e.g. shipping check on billing form
return '';
}
// for required field highlighting on form when no submit made
$this->Application->SetVar('check_'.strtolower($address_type).'_address', 'true');
/*if ((strtolower($address_type) == 'billing') && $this->UsingCreditCard($params)) {
$this->Application->SetVar('check_credit_card', 'true');
}*/
$this->Application->HandleEvent(new kEvent('ord:SetStepRequiredFields'));
$user_id = $this->Application->RecallVar('user_id');
$sql = 'SELECT AddressId
FROM '.TABLE_PREFIX.'Addresses
WHERE PortalUserId = '.$user_id.' AND LastUsedAs'.$address_type.' = 1';
$address_id = $this->Conn->GetOne($sql);
if (!$address_id) {
return '';
}
$addr_list =& $this->Application->recallObject('addr', 'addr_List', Array('per_page'=>-1, 'skip_counting'=>true) );
$addr_list->Query();
$object =& $this->getObject();
if (!$addr_list->CheckAddress($object->FieldValues, $address_type)) {
$addr_list->CopyAddress($address_id, $address_type);
}
}
function IsProfileAddress($params)
{
$object =& $this->getObject($params);
$address_type = ucfirst($params['type']);
return $object->IsProfileAddress($address_type);
}
function HasPayPalSubscription($params)
{
$object =& $this->getObject($params);
$sql = 'SELECT COUNT(*)
FROM '.TABLE_PREFIX.'OrderItems oi
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = oi.ProductId
WHERE (oi.OrderId = '.$object->GetID().') AND (p.PayPalRecurring = 1)';
return $this->Conn->GetOne($sql);
}
function GetPayPalSubscriptionForm($params)
{
$object =& $this->getObject($params);
$gw_data = $object->getGatewayData($params['payment_type_id']);
$this->Application->registerClass( $gw_data['ClassName'], GW_CLASS_PATH.'/'.$gw_data['ClassFile'] );
$gateway_object =& $this->Application->recallObject( $gw_data['ClassName'] );
$sql = 'SELECT oi.*
FROM '.TABLE_PREFIX.'OrderItems oi
LEFT JOIN '.TABLE_PREFIX.'Products p ON p.ProductId = oi.ProductId
WHERE (oi.OrderId = '.$object->GetID().') AND (p.PayPalRecurring = 1)';
$order_item = $this->Conn->GetRow($sql);
$order_item_data = unserialize($order_item['ItemData']);
$cycle = ceil($order_item_data['Duration'] / 86400);
$cycle_units = 'D';
$item_data = $object->FieldValues;
$item_data['item_name'] = $order_item['ProductName'];
$item_data['item_number'] = $order_item['OrderItemId'];
$item_data['custom'] = $order_item['OrderId'];
$item_data['a1'] = '';
$item_data['p1'] = '';
$item_data['t1'] = '';
$item_data['a2'] = '';
$item_data['p2'] = '';
$item_data['t2'] = '';
$item_data['a3'] = $order_item['Price']; //rate
$item_data['p3'] = $cycle; //cycle
$item_data['t3'] = $cycle_units; //cycle units D (days), W (weeks), M (months), Y (years)
$item_data['src'] = '1'; // Recurring payments. If set to 1, the payment will recur unless your customer cancels the subscription before the end of the billing cycle.
$item_data['sra'] = '1'; // Reattempt on failure. If set to 1, and the payment fails, the payment will be reattempted two more times. After the third failure, the subscription will be cancelled.
$item_data['srt'] = ''; // Recurring Times. This is the number of payments which will occur at the regular rate.
$hidden_fields = $gateway_object->getSubscriptionFields($item_data, $params, $gw_data['gw_params']);
$ret = '';
if (!is_array($hidden_fields)) {
return $hidden_fields;
}
$tpl = '<input type="hidden" name="%s" value="%s" />'."\n";
foreach($hidden_fields as $hidden_name => $hidden_value)
{
$ret .= sprintf($tpl, $hidden_name, $hidden_value);
}
return $ret;
}
function UserHasPendingOrders($params)
{
$sql = 'SELECT OrderId FROM '.$this->Application->getUnitOption($this->Prefix, 'TableName').'
WHERE PortalUserId = '.$this->Application->RecallVar('user_id').'
AND Status = '.ORDER_STATUS_PENDING;
return $this->Conn->GetOne($sql) ? 1 : 0;
}
function AllowAddAddress($params)
{
$user =& $this->Application->recallObject('u.current');
if ($user->GetDBField('cust_shipping_addr_block')) return false;
$address_list =& $this->Application->recallObject('addr','addr_List', Array('per_page'=>-1, 'skip_counting'=>true) );
$address_list->Query();
$max = $this->Application->ConfigValue('MaxAddresses');
return $max <= 0 ? true : $address_list->RecordsCount < $max;
}
function FreePromoShippingAvailable($params)
{
$object =& $this->Application->recallObject('orditems');
$free_ship = $object->GetDBField('MinQtyFreePromoShipping');
$tangible = ($object->GetDBField('Type') == 1)? 1 : 0;
return ($tangible && ($free_ship > 0 && $free_ship <= $object->GetDBField('Quantity')))? 1 : 0;
}
/**
* Creates link for removing coupon or gift certificate
*
* @param Array $params
* @return string
*/
function RemoveCouponLink($params)
{
$type = strtolower($params['type']);
$url_params = Array (
'pass' => 'm,ord',
'ord_event' => ($type == 'coupon') ? 'OnRemoveCoupon' : 'OnRemoveGiftCertificate',
'm_cat_id' => 0,
);
return $this->Application->HREF('', '', $url_params);
}
/**
* Calculates total weight of items in shopping cart
*
* @param Array $params
* @return float
*/
function TotalOrderWeight($params)
{
$object =& $this->getObject();
/* @var $object kDBItem */
$sql = 'SELECT SUM( IF(oi.Weight IS NULL, 0, oi.Weight * oi.Quantity) )
FROM '.TABLE_PREFIX.'OrderItems oi
WHERE oi.OrderId = '.$object->GetID();
$total_weight = $this->Conn->GetOne($sql);
if ($total_weight == '') {
// zero weight -> return text about it
return $this->Application->Phrase('lu_NotAvailable');
}
$regional =& $this->Application->recallObject('lang.current');
switch ($regional->GetDBField('UnitSystem')) {
case 1:
// metric system -> add kg sign
$total_weight .= ' '.$this->Application->Phrase('lu_kg');
break;
case 2:
// uk system -> convert to pounds
list($pounds, $ounces) = Kg2Pounds($total_weight);
$total_weight = $pounds.' '.$this->Application->Phrase('lu_pounds').' '.$ounces.' '.$this->Application->Phrase('lu_ounces');
break;
}
return $total_weight;
}
function InitCatalogTab($params)
{
$tab_params['mode'] = $this->Application->GetVar('tm'); // single/multi selection possible
$tab_params['special'] = $this->Application->GetVar('ts'); // use special for this tab
$tab_params['dependant'] = $this->Application->GetVar('td'); // is grid dependant on categories grid
// set default params (same as in catalog)
if ($tab_params['mode'] === false) $tab_params['mode'] = 'multi';
if ($tab_params['special'] === false) $tab_params['special'] = '';
if ($tab_params['dependant'] === false) $tab_params['dependant'] = 'yes';
// pass params to block with tab content
$params['name'] = $params['render_as'];
$params['prefix'] = trim($this->Prefix.'.'.($tab_params['special'] ? $tab_params['special'] : $this->Special), '.');
$params['cat_prefix'] = trim('c.'.($tab_params['special'] ? $tab_params['special'] : $this->Special), '.');
$params['tab_mode'] = $tab_params['mode'];
$params['grid_name'] = ($tab_params['mode'] == 'multi') ? $params['default_grid'] : $params['radio_grid'];
$params['tab_dependant'] = $tab_params['dependant'];
$params['show_category'] = $tab_params['special'] == 'showall' ? 1 : 0; // this is advanced view -> show category name
return $this->Application->ParseBlock($params, 1);
}
/**
* Checks if required payment method is available
*
* @param Array $params
* @return bool
*/
function HasPaymentGateway($params)
{
static $payment_types = Array ();
$gw_name = $params['name'];
if (!array_key_exists($gw_name, $payment_types)) {
$sql = 'SELECT pt.PaymentTypeId, pt.PortalGroups
FROM '.TABLE_PREFIX.'PaymentTypes pt
LEFT JOIN '.TABLE_PREFIX.'Gateways g ON pt.GatewayId = g.GatewayId
WHERE (g.Name = '.$this->Conn->qstr($params['name']).') AND (pt.Status = '.STATUS_ACTIVE.')';
$payment_types[$gw_name] = $this->Conn->GetRow($sql);
}
if (!$payment_types[$gw_name]) {
return false;
}
$pt_groups = explode(',', substr($payment_types[$gw_name]['PortalGroups'], 1, -1));
$user_groups = explode(',', $this->Application->RecallVar('UserGroups'));
return array_intersect($user_groups, $pt_groups) ? $payment_types[$gw_name]['PaymentTypeId'] : false;
}
function DisplayPaymentGateway($params)
{
$payment_type_id = $this->HasPaymentGateway($params);
if (!$payment_type_id) {
return '';
}
$object =& $this->getObject($params);
/* @var $object OrdersItem */
$gw_data = $object->getGatewayData($payment_type_id);
$block_params = $gw_data['gw_params'];
$block_params['name'] = $params['render_as'];
$block_params['payment_type_id'] = $payment_type_id;
return $this->Application->ParseBlock($block_params);
}
+
+ function IsLabelExits($params)
+ {
+ $file = parent::Field(Array('field' => $params['field']));
+ $file = $file.'.pdf';
+ $full_path = USPS_LABEL_FOLDER.$file;
+ return ( @file_exists($full_path) AND @is_file($full_path)) ? 1 : 0 ;
+ }
+
+ function PrintUSPSErrors($params)
+ {
+ $o = '';
+ $ses_usps_erros = Array();
+ $ses_usps_erros = unserialize($this->Application->RecallVar('usps_errors'));
+ if ( count($ses_usps_erros) > 0 && is_array($ses_usps_erros)) {
+ foreach ( $ses_usps_erros as $order_number => $error_description ) {
+ $block_params = Array();
+ $block_params['name'] = $params['render_as'];
+ $block_params['order_number'] = $order_number;
+ $block_params['error_description'] = $error_description;
+ $o.=$this->Application->ParseBlock($block_params, 1);
+ }
+ $this->Application->RemoveVar('usps_errors');
+ }
+ return $o;
+ }
}
?>
\ No newline at end of file
Property changes on: branches/RC/in-commerce/units/orders/orders_tag_processor.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.53.2.19
\ No newline at end of property
+1.53.2.20
\ No newline at end of property
Index: branches/RC/in-commerce/admin_templates/shipping/shipping_quote_engine_edit.tpl
===================================================================
--- branches/RC/in-commerce/admin_templates/shipping/shipping_quote_engine_edit.tpl (revision 11628)
+++ branches/RC/in-commerce/admin_templates/shipping/shipping_quote_engine_edit.tpl (revision 11629)
@@ -1,112 +1,115 @@
<inp2:adm_SetPopupSize width="780" height="580"/>
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" prefix="sqe" section="in-commerce:shipping_quote_engines" title_preset="engine_edit"/>
<!-- 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('sqe','<inp2:sqe_SaveEvent/>');
}
) );
a_toolbar.AddButton( new ToolBarButton('cancel', '<inp2:m_phrase label="la_ToolTip_Cancel" escape="1"/>', function() {
submit_event('sqe','OnCancelEdit');
}
) );
a_toolbar.Render();
</script>
</td>
</tr>
</tbody>
</table>
<inp2:m_DefineElement name="carrier">
<tr class="<inp2:m_odd_even odd="edit-form-odd" even="edit-form-even"/>">
<inp2:m_inc param="tab_index" by="1"/>
<td class="label-cell">
<input type="hidden" id="<inp2:sqe_InputName field="{$carrier}Enabled"/>" name="<inp2:sqe_InputName field="{$carrier}Enabled"/>" value="<inp2:sqe_Field field="{$carrier}Enabled" db="db"/>">
<input tabindex="<inp2:m_get param="tab_index"/>" type="checkbox" id="_cb_<inp2:sqe_InputName field="{$carrier}Enabled"/>" name="_cb_<inp2:sqe_InputName field="{$carrier}Enabled"/>" <inp2:sqe_Field field="{$carrier}Enabled" checked="checked" db="db"/> onclick="update_checkbox(this, document.getElementById('<inp2:sqe_InputName field="{$carrier}Enabled"/>'))" onchange="check_carrier('_cb_<inp2:sqe_InputName field="{$carrier}Enabled"/>', '<inp2:sqe_InputName field="{$carrier}Account" />', '_cb_<inp2:sqe_InputName field="{$carrier}Invoiced"/>')">
<inp2:m_param name="title" />
</td>
<td class="control-mid">&nbsp;</td>
<td class="control-cell">
<inp2:m_phrase label="la_AccountLogin" />:
<input type="text" name="<inp2:sqe_InputName field="{$carrier}Account" />" id="<inp2:sqe_InputName field="{$carrier}Account" />" value="<inp2:sqe_Field field="{$carrier}Account" />" tabindex="<inp2:m_get param="tab_index"/>">
<inp2:m_phrase label="la_Invoiced" />:
<input type="hidden" id="<inp2:sqe_InputName field="{$carrier}Invoiced"/>" name="<inp2:sqe_InputName field="{$carrier}Invoiced"/>" value="<inp2:sqe_Field field="{$carrier}Invoiced" db="db"/>">
<input tabindex="<inp2:m_get param="tab_index"/>" type="checkbox" id="_cb_<inp2:sqe_InputName field="{$carrier}Invoiced"/>" name="_cb_<inp2:sqe_InputName field="{$carrier}Invoiced"/>" <inp2:sqe_Field field="{$carrier}Invoiced" checked="checked" db="db"/> onclick="update_checkbox(this, document.getElementById('<inp2:sqe_InputName field="{$carrier}Invoiced"/>'))">
</td>
</tr>
<script type="text/javascript">
check_carrier('_cb_<inp2:sqe_InputName field="{$carrier}Enabled"/>', '<inp2:sqe_InputName field="{$carrier}Account" />', '_cb_<inp2:sqe_InputName field="{$carrier}Invoiced"/>');
</script>
</inp2:m_DefineElement>
<script type="text/javascript">
function check_carrier(carrier_checkbox, account_field, invoiced_checkbox)
{
if(document.getElementById(carrier_checkbox).checked)
{
document.getElementById(account_field).disabled = false;
document.getElementById(invoiced_checkbox).disabled = false;
}
else
{
document.getElementById(account_field).disabled = true;
document.getElementById(invoiced_checkbox).disabled = true;
}
}
</script>
<inp2:sqe_SaveWarning name="grid_save_warning"/>
<inp2:sqe_ErrorWarning name="form_error_warning"/>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="!la_Text_General!"/>
<inp2:m_RenderElement name="inp_label" prefix="sqe" field="EngineId" title="!la_fld_EngineId!"/>
<inp2:m_RenderElement name="inp_label" prefix="sqe" field="Name" title="!la_fld_ShippingQuoteEngineName!"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="sqe" field="Status" title="!la_fld_Enabled!"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="sqe" field="AccountLogin" title="!la_fld_Login!" />
<tr class="<inp2:m_odd_even odd="edit-form-odd" even="edit-form-even"/>">
<inp2:m_RenderElement name="inp_edit_field_caption" prefix="sqe" field="AccountPassword" title="!la_fld_Password!" />
<td class="control-cell">
<input type="password" name="<inp2:sqe_InputName field="AccountPassword" />" id="<inp2:sqe_InputName field="AccountPassword" />" value="">
</td>
<inp2:m_RenderElement name="inp_edit_error" prefix="sqe" field="AccountPassword"/>
</tr>
+ <inp2:m_if check="sqe_FieldEquals" field="Name" value="Intershipper.com">
+
<inp2:m_RenderElement name="subsection" title="!la_Text_Carriers!"/>
<inp2:m_RenderElement name="carrier" carrier="UPS" title="UPS" />
<inp2:m_RenderElement name="carrier" carrier="FDX" title="FedEx" />
<inp2:m_RenderElement name="carrier" carrier="DHL" title="DHL" />
<inp2:m_RenderElement name="carrier" carrier="USP" title="USPS" />
<inp2:m_RenderElement name="carrier" carrier="ARB" title="Airborne" />
<inp2:m_RenderElement name="subsection" title="!la_Text_Delivery!"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="sqe" field="1DYEnabled" title="!la_fld_FirstDayDelivery!"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="sqe" field="2DYEnabled" title="!la_fld_SecondDayDelivery!"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="sqe" field="3DYEnabled" title="!la_fld_ThirdDayDelivery!"/>
<inp2:m_RenderElement name="inp_edit_checkbox" prefix="sqe" field="GNDEnabled" title="!la_fld_GroundDelivery!"/>
<inp2:m_RenderElement name="subsection" title="!la_Text_Other!"/>
<inp2:m_RenderElement name="inp_edit_options" prefix="sqe" field="ShipMethod" title="!la_fld_ShipMethod!"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="sqe" field="FlatSurcharge" title="!la_fld_FlatSurcharge!" size="10"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="sqe" field="PercentSurcharge" title="!la_fld_PercentSurcharge!" size="10"/>
+ </inp2:m_if>
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Property changes on: branches/RC/in-commerce/admin_templates/shipping/shipping_quote_engine_edit.tpl
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.11.2.2
\ No newline at end of property
+1.11.2.3
\ No newline at end of property
Index: branches/RC/in-commerce/admin_templates/orders/orders_edit_shipping.tpl
===================================================================
--- branches/RC/in-commerce/admin_templates/orders/orders_edit_shipping.tpl (revision 11628)
+++ branches/RC/in-commerce/admin_templates/orders/orders_edit_shipping.tpl (revision 11629)
@@ -1,222 +1,239 @@
<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_shipping" 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('reset_to_billing', '<inp2:m_phrase label="la_ToolTip_ResetToBilling" escape="1"/>', function() {
submit_event('ord','OnResetToBilling');
}
) );
</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>
<inp2:m_RenderElement name="inp_edit_hidden" prefix="ord" field="Status" db="db"/>
<inp2:ord_SaveWarning name="grid_save_warning"/>
+<div align="center" class="error"><inp2:m_Get name="usps_errors" /></div>
<inp2:ord_ErrorWarning name="form_error_warning"/>
<div id="scroll_container">
<table class="edit-form">
<inp2:m_RenderElement name="subsection" title="!la_section_OrderShipping!"/>
<inp2:m_if check="ord_OrderEditable">
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingTo" title="!la_fld_ShippingTo!" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingCompany" title="!la_fld_ShippingCompany!" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingPhone" title="!la_fld_ShippingPhone!" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingFax" title="!la_fld_ShippingFax!" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingEmail" title="!la_fld_ShippingEmail!" size="20"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingAddress1" title="!la_fld_ShippingAddress1!" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingAddress2" title="!la_fld_ShippingAddress2!" size="40"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingCity" title="!la_fld_ShippingCity!" size="20"/>
<script type="text/javascript">
function update_address()
{
submit_event('ord','OnQuietPreSave');
}
</script>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingState" title="!la_fld_ShippingState!" size="20" />
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingZip" title="!la_fld_ShippingZip!" size="10"/>
<inp2:m_RenderElement name="inp_edit_options" prefix="ord" field="ShippingCountry" title="!la_fld_ShippingCountry!" size="20" />
<inp2:m_DefineElement name="order_option">
<input onclick="submit_event('ord','OnQuietPreSave');" class="simple" type="radio" <inp2:m_param name="checked"/> name="<inp2:InputName field="$field"/>" id="<inp2:InputName field="$field"/>_<inp2:m_param name="key"/>" value="<inp2:m_param name="key"/>"><label for="<inp2:InputName field="$field"/>_<inp2:m_param name="key"/>"><inp2:m_phrase label="$option"/></label>&nbsp;<br>
</inp2:m_DefineElement>
<!-- <inp2:m_RenderElement name="inp_edit_radio" prefix="ord" field="ShippingOption" title="!la_fld_ShippingOption!" size="20" /> -->
<inp2:m_DefineElement name="order_shipping_type">
<option <inp2:m_param name="selected"/> value="<inp2:m_param name="ShippingId"/>"><inp2:m_param name="ShippingName"/> (<inp2:m_param name="TotalCost"/>)
</inp2:m_DefineElement>
<inp2:m_DefineElement name="order_shipment">
<tr class="<inp2:m_odd_even var="shipping_odd_even" odd="table-color1" even="table-color2"/>">
<td style="border-right: 1px solid black"><inp2:m_param name="shipment"/></td>
<td>
<select style="width:230px;" name="<inp2:m_param name="field_name"/>" id="<inp2:m_param name="field_name"/>">
<inp2:ord_PrintShippingTypes block="order_shipping_type" />
</select>
</td>
</tr>
</inp2:m_DefineElement>
<tr class="<inp2:m_odd_even odd="edit-form-odd" even="edit-form-even"/>">
<inp2:m_inc param="tab_index" by="1"/>
<td class="label-cell">
<inp2:m_Phrase label="la_fld_ShippingOptions"/>:
</td>
<td class="control-mid">&nbsp;</td>
<td class="control-cell">
<inp2:ord_PredefinedOptions field="ShippingOption" block="order_option" selected="checked" />
</td>
</tr>
<tr class="<inp2:m_odd_even odd="edit-form-odd" even="edit-form-even"/>">
<inp2:m_inc param="tab_index" by="1"/>
<td class="label-cell">
<inp2:m_Phrase label="la_fld_ShippingType"/>:
</td>
<td class="control-mid">&nbsp;</td>
<td class="control-cell">
<table border="0" cellspacing="1" cellpadding="3" width="100%" style="border: 1px solid black; border-collapse: collapse">
<tr class="subsectiontitle" style="border-bottom: 1px solid black">
<td width="25%" style="border-right: 1px solid black"><b><inp2:m_Phrase label="lu_ship_Shipment" /></b></td>
<td width="45%" style="border-right: 1px solid black"><b><inp2:m_Phrase label="lu_ship_ShippingType" /></b></td>
</tr>
<inp2:ord_PrintShippings block="order_shipment"/>
</table>
</td>
</tr>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingCost" title="!la_fld_ShippingCost!" size="10"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="InsuranceFee" title="!la_fld_InsuranceFee!" size="10" format="$ %.2f"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingCustomerAccount" title="!la_fld_ShippingCustomerAccount!" size="30"/>
<inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingTracking" title="!la_fld_ShippingTracking!" size="30"/>
<inp2:m_RenderElement name="inp_edit_date_time" prefix="ord" field="ShippingDate" title="!la_fld_ShippingDate!" size="16"/>
<inp2:m_else/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingTo" title="!la_fld_ShippingTo!" size="40"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingCompany" title="!la_fld_ShippingCompany!" size="40"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingPhone" title="!la_fld_ShippingPhone!" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingFax" title="!la_fld_ShippingFax!" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingEmail" title="!la_fld_ShippingEmail!" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingAddress1" title="!la_fld_ShippingAddress1!" size="40"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingAddress2" title="!la_fld_ShippingAddress2!" size="40"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingCity" title="!la_fld_ShippingCity!" size="20"/>
<script type="text/javascript">
function update_address()
{
submit_event('ord','OnQuietPreSave');
}
</script>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingCountry" title="!la_fld_ShippingCountry!" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingState" title="!la_fld_ShippingState!" size="20"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingZip" title="!la_fld_ShippingZip!" size="10"/>
<inp2:m_DefineElement name="order_option_label">
<inp2:m_param name="key"/> <inp2:m_phrase label="$option"/>
</inp2:m_DefineElement>
<!--inp2:m_ParseBlock name="inp_edit_radio" prefix="ord" field="ShippingOption" title="!la_fld_ShippingOption!" size="20"/-->
<inp2:m_DefineElement name="order_shipping_type">
<option <inp2:m_param name="selected"/> value="<inp2:m_param name="ShippingId"/>"><inp2:m_param name="ShippingName"/> (<inp2:m_param name="TotalCost"/>)
</inp2:m_DefineElement>
<inp2:m_DefineElement name="order_shipment_label">
<inp2:m_param name="shipment"/> - <inp2:ord_PrintShippingTypes block="order_shipping_type" selected_only="1"/>
</inp2:m_DefineElement>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingOption" title="!la_fld_ShippingOptions!" size="10"/>
<tr class="<inp2:m_odd_even odd="edit-form-odd" even="edit-form-even"/>">
<inp2:m_inc param="tab_index" by="1"/>
<td class="label-cell">
<inp2:m_Phrase label="la_fld_ShippingType"/>:
</td>
<td class="control-mid">&nbsp;</td>
<td class="control-cell">
<inp2:ord_PrintShippings block="order_shipment_label"/>
</td>
</tr>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingCost" title="!la_fld_ShippingCost!" size="10" format="$ %.2f"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="InsuranceFee" title="!la_fld_InsuranceFee!" size="10" format="$ %.2f"/>
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingCustomerAccount" title="!la_fld_ShippingCustomerAccount!" size="30"/>
- <inp2:m_RenderElement name="inp_edit_box" prefix="ord" field="ShippingTracking" title="!la_fld_ShippingTracking!" size="30"/>
+
+ <inp2:m_DefineElement name="inp_shipping_label" is_last="" as_label="" currency="" is_last="">
+ <tr class="<inp2:m_odd_even odd="edit-form-odd" even="edit-form-even"/>">
+ <inp2:m_RenderElement name="inp_edit_field_caption" prefix="$prefix" field="$field" title="$title" is_last="$is_last"/>
+ <td valign="top" class="control-cell">
+ <inp2:{$prefix}_Field field="$field" as_label="$as_label" currency="$currency"/>
+
+ <inp2:m_if check="{$prefix}_IsLabelExits" field="$field" >
+ &nbsp; &nbsp;<a href="#" onClick="javascript:submit_event('<inp2:m_Param name="prefix"/>', 'OnDownloadLabel'); return false;"><inp2:m_Phrase label="la_ViewLabel"/></a>
+ </inp2:m_if>
+ </td>
+ </tr>
+ </inp2:m_DefineElement>
+
+ <inp2:m_RenderElement name="inp_shipping_label" prefix="ord" field="ShippingTracking" title="!la_fld_ShippingTracking!" size="30"/>
+
+
<inp2:m_RenderElement name="inp_label" prefix="ord" field="ShippingDate" title="!la_fld_ShippingDate!" size="16"/>
</inp2:m_if>
<inp2:m_RenderElement name="inp_edit_filler"/>
</table>
</div>
<input type="hidden" name="to_tab" value="Shipping">
<input type="hidden" name="check_shipping_address" value="true" />
<inp2:m_include t="incs/footer"/>
\ No newline at end of file
Property changes on: branches/RC/in-commerce/admin_templates/orders/orders_edit_shipping.tpl
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.13.2.4
\ No newline at end of property
+1.13.2.5
\ No newline at end of property
Index: branches/RC/in-commerce/admin_templates/orders/orders_toship_list.tpl
===================================================================
--- branches/RC/in-commerce/admin_templates/orders/orders_toship_list.tpl (revision 11628)
+++ branches/RC/in-commerce/admin_templates/orders/orders_toship_list.tpl (revision 11629)
@@ -1,72 +1,82 @@
<inp2:m_include t="incs/header"/>
<inp2:m_RenderElement name="combined_header" prefix="ord.toship" section="in-commerce:orders" title_preset="orders_toship" pagination="1" tabs="in-commerce/orders/orders_list_tabs"/>
+<inp2:m_DefineElement name="usps_errors">
+<table>
+ <tr>
+ <td valign="top" class="text">Order: <inp2:m_Param name="order_number"/></td>
+ <td class="error">USPS error: <inp2:m_Param name="error_description"/></td>
+ </tr>
+</table>
+</inp2:m_DefineElement>
+
+<inp2:ord_PrintUSPSErrors render_as="usps_errors" />
<!-- ToolBar -->
<table class="toolbar" height="30" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td>
<script type="text/javascript">
//do not rename - this function is used in default grid for double click!
function edit()
{
set_hidden_field('remove_specials[ord.toship]',1);
std_edit_item('ord.toship', 'in-commerce/orders/orders_edit');
}
var a_toolbar = new ToolBar();
a_toolbar.AddButton( new ToolBarButton('edit', '<inp2:m_phrase label="la_ToolTip_Edit" escape="1"/>', edit) );
a_toolbar.AddButton( new ToolBarSeparator('sep3') );
a_toolbar.AddButton( new ToolBarButton('clone', '<inp2:m_phrase label="la_ToolTip_Clone" escape="1"/>', function() {
set_hidden_field('remove_specials[ord.toship]',1);
submit_event('ord.toship','OnMassClone');
}
) );
a_toolbar.AddButton( new ToolBarButton('ship', '<inp2:m_phrase label="la_ToolTip_Ship" escape="1"/>', function() {
submit_event('ord.toship','OnMassOrderShip');
}
) );
a_toolbar.AddButton( new ToolBarButton('deny', '<inp2:m_phrase label="la_ToolTip_Deny" escape="1"/>', function() {
submit_event('ord.toship','OnMassOrderDeny');
}
) );
a_toolbar.AddButton( new ToolBarButton('archive', '<inp2:m_phrase label="la_ToolTip_Archive" escape="1"/>', function() {
submit_event('ord.toship','OnMassOrderArchive');
}
) );
a_toolbar.AddButton( new ToolBarSeparator('sep4') );
a_toolbar.AddButton( new ToolBarButton('print', '<inp2:m_phrase label="la_ToolTip_Print" escape="1"/>', function() {
print_orders('ord.toship', 'in-commerce/orders/orders_print');
}
) );
a_toolbar.AddButton( new ToolBarButton('view', '<inp2:m_phrase label="la_ToolTip_View" escape="1"/>', function() {
show_viewmenu(a_toolbar,'view');
}
) );
a_toolbar.Render();
</script>
</td>
<inp2:m_RenderElement name="search_main_toolbar" prefix="ord.toship" grid="Default"/>
</tr>
</tbody>
</table>
<inp2:m_RenderElement name="grid" PrefixSpecial="ord.toship" IdField="OrderId" grid="Default"/>
<script type="text/javascript">
Grids['ord.toship'].SetDependantToolbarButtons( new Array('edit','delete','clone','ship','deny','archive','print') );
</script>
<inp2:m_include t="incs/footer"/>
<script type="text/javascript">
set_hidden_field('order_type','toship');
</script>
\ No newline at end of file
Property changes on: branches/RC/in-commerce/admin_templates/orders/orders_toship_list.tpl
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.7.2.2
\ No newline at end of property
+1.7.2.3
\ No newline at end of property
Index: branches/RC/in-commerce/install/upgrades.php
===================================================================
--- branches/RC/in-commerce/install/upgrades.php (revision 11628)
+++ branches/RC/in-commerce/install/upgrades.php (revision 11629)
@@ -1,71 +1,80 @@
<?php
$upgrade_class = 'InCommerceUpgrades';
/**
* Class, that holds all upgrade scripts for "Core" module
*
*/
class InCommerceUpgrades extends kHelper {
/**
* Install toolkit instance
*
* @var kInstallToolkit
*/
var $_toolkit = null;
/**
* Sets common instance of installator toolkit
*
* @param kInstallToolkit $instance
*/
function setToolkit(&$instance)
{
$this->_toolkit =& $instance;
}
/**
* Changes table structure, where multilingual fields of TEXT type are present
*
* @param string $mode when called mode {before, after)
*/
function Upgrade_5_0_0($mode)
{
if ($mode == 'after') {
// update icon
$root_category = $this->Application->findModule('Name', 'In-Commerce', 'RootCat');
$sql = 'UPDATE ' . $this->Application->getUnitOption('c', 'TableName') . '
SET UseMenuIconUrl = 1, MenuIconUrl = "in-commerce/img/menu_products.gif"
WHERE ' . $this->Application->getUnitOption('c', 'IDField') . ' = ' . $root_category;
$this->Conn->Query($sql);
$this->_updateDetailTemplate('p', 'in-commerce/product/details', 'in-commerce/designs/detail');
+
+ $store_name = $this->Application->ConfigValue('Comm_StoreName');
+
+ $sql = 'UPDATE '.TABLE_PREFIX.'ConfigurationValues
+ SET VariableName = '.$this->Conn->qstr($store_name).'
+ WHERE VariableName = \'Comm_CompanyName\'';
+ $this->Conn->Query($sql);
+
+ $this->Conn->Query($sql);
}
}
/**
* Replaces deprecated detail template design with new one
*
* @param string $prefix
* @param string $from_template
* @param string $to_template
*/
function _updateDetailTemplate($prefix, $from_template, $to_template)
{
$sql = 'SELECT CustomFieldId
FROM ' . TABLE_PREFIX . 'CustomField
WHERE FieldName = "' . $prefix . '_ItemTemplate"';
$custom_field_id = $this->Conn->GetOne($sql);
$ml_formatter =& $this->Application->recallObject('kMultiLanguage');
/* @var $ml_formatter kMultiLanguage */
$field = $ml_formatter->LangFieldName('cust_' . $custom_field_id, true);
$sql = 'UPDATE ' . TABLE_PREFIX . 'CategoryCustomData
SET ' . $field . ' = "' . $to_template . '"
WHERE ' . $field . ' = "' . $from_template . '"';
$this->Conn->Query($sql);
}
}
\ No newline at end of file
Property changes on: branches/RC/in-commerce/install/upgrades.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1.2.3
\ No newline at end of property
+1.1.2.4
\ No newline at end of property
Index: branches/RC/in-commerce/install/upgrades.sql
===================================================================
--- branches/RC/in-commerce/install/upgrades.sql (revision 11628)
+++ branches/RC/in-commerce/install/upgrades.sql (revision 11629)
@@ -1,17 +1,32 @@
# ===== 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';
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 ConfigurationValues VALUES (DEFAULT , 'Comm_Contacts_Name', NULL , 'In-Commerce', 'in-commerce:contacts');
+
+INSERT INTO ConfigurationAdmin VALUES ('Comm_Contacts_Name', 'la_Text_ContactsGeneral', 'la_text_ContactName', 'text', NULL , NULL , '10.015', '0', '1');
+
+INSERT INTO ConfigurationValues VALUES (DEFAULT , 'Comm_CompanyName', '', 'In-Commerce', 'in-commerce:contacts');
+
+INSERT INTO ConfigurationAdmin VALUES ('Comm_CompanyName', 'la_Text_ContactsGeneral', 'la_text_CompanyName', 'text', NULL , NULL , '10.005', '0', '1');
+
+
+UPDATE ConfigurationAdmin SET prompt = 'la_text_StoreName' WHERE VariableName = 'Comm_StoreName';
+
Property changes on: branches/RC/in-commerce/install/upgrades.sql
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1.2.9
\ No newline at end of property
+1.1.2.10
\ No newline at end of property
Index: branches/RC/in-commerce/install/english.lang
===================================================================
--- branches/RC/in-commerce/install/english.lang (revision 11628)
+++ branches/RC/in-commerce/install/english.lang (revision 11629)
@@ -1,1661 +1,1664 @@
<LANGUAGES>
<LANGUAGE PackName="English" Encoding="base64"><DATEFORMAT>m/d/Y</DATEFORMAT><TIMEFORMAT>g:i:s A</TIMEFORMAT><INPUTDATEFORMAT>m/d/Y</INPUTDATEFORMAT><INPUTTIMEFORMAT>g:i:s A</INPUTTIMEFORMAT><DECIMAL>.</DECIMAL><THOUSANDS>,</THOUSANDS><CHARSET>utf-8</CHARSET><UNITSYSTEM>2</UNITSYSTEM>
<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_AdjustBackorder" Module="In-Commerce" Type="1">QWRqdXN0IGJhY2tvcmRlciBhdmFpbGFiaWxpdHkgYXV0b21hdGljYWxseSB3aGVuIHRoZSBmbGFnIGlzIHNldCwgdG9kYXkncyBkYXRlIHBsdXM=</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_ascending" Module="In-Commerce" Type="1">QXNjZW5kaW5n</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_Add" Module="In-Commerce" Type="1">QWRk</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">QnkgQ2F0ZWdvcnk=</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_accumulated_amount" Module="In-Commerce" Type="1">YnkgYWNjdW11bGF0ZWQgYW1vdW50</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_AccessDuration" Module="In-Commerce" Type="1">QWNjZXNzIER1cmF0aW9u</PHRASE>
<PHRASE Label="la_col_AccessDurationUnit" Module="In-Commerce" Type="1">QWNjZXNzIER1cmF0aW9uIFVuaXQ=</PHRASE>
<PHRASE Label="la_col_AddedOn" Module="In-Commerce" Type="1">QWRkZWQgT24=</PHRASE>
<PHRASE Label="la_col_AffiliateUser" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFVzZXI=</PHRASE>
<PHRASE Label="la_col_AltName" Module="In-Commerce" Type="1">QWx0IFZhbHVl</PHRASE>
<PHRASE Label="la_col_Amount" Module="In-Commerce" Type="1">QW1vdW50</PHRASE>
<PHRASE Label="la_col_Availability" Module="In-Commerce" Type="1">QXZhaWwu</PHRASE>
<PHRASE Label="la_col_BaseFee" Module="In-Commerce" Type="1">QmFzZSBGZWU=</PHRASE>
<PHRASE Label="la_col_BuiltIn" Module="In-Commerce" Type="1">QnVpbHQtSW4=</PHRASE>
<PHRASE Label="la_col_CODallowed" Module="In-Commerce" Type="1">Q09EIEFsbG93ZWQ=</PHRASE>
<PHRASE Label="la_col_Code" Module="In-Commerce" Type="1">Q29kZQ==</PHRASE>
<PHRASE Label="la_col_CODFlatSurcharge" Module="In-Commerce" Type="1">Q09EIEZsYXQgU3VyZWNoYXJnZQ==</PHRASE>
<PHRASE Label="la_col_CODFlatSurecharge" Module="In-Commerce" Type="1">Q09EIGZsYXQgc3VyZWNoYXJnZQ==</PHRASE>
<PHRASE Label="la_col_CODPercentSurcharge" Module="In-Commerce" Type="1">Q09EIFBlcmNlbnQgU3VyY2hhcmdl</PHRASE>
<PHRASE Label="la_col_Combination" Module="In-Commerce" Type="1">Q29tYmluYXRpb24=</PHRASE>
<PHRASE Label="la_col_Comment" Module="In-Commerce" Type="1">Q29tbWVudA==</PHRASE>
<PHRASE Label="la_col_Commission" Module="In-Commerce" Type="1">QWZmaWxsaWF0ZSBDb21taXNzaW9u</PHRASE>
<PHRASE Label="la_col_Cost" Module="In-Commerce" Type="1">Q29zdA==</PHRASE>
<PHRASE Label="la_col_CouponCode" Module="In-Commerce" Type="1">Q291cG9uIENvZGU=</PHRASE>
<PHRASE Label="la_col_CouponItemType" Module="In-Commerce" Type="1">Q291cG9uIEl0ZW0gVHlwZQ==</PHRASE>
<PHRASE Label="la_col_CreditCardNumber" Module="In-Commerce" Type="1">Q3JlZGl0IENhcmQgTnVtYmVy</PHRASE>
<PHRASE Label="la_col_CurrencyName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_CurrencySymbol" Module="In-Commerce" Type="1">U3ltYm9s</PHRASE>
<PHRASE Label="la_col_CurrencySymbolPosition" Module="In-Commerce" Type="1">U3ltYm9sIFBvc2l0aW9u</PHRASE>
<PHRASE Label="la_col_CustomerName" Module="In-Commerce" Type="1">Q3VzdG9tZXIgTmFtZQ==</PHRASE>
<PHRASE Label="la_col_DisplayOnFront" Module="In-Commerce" Type="1">RGlzcGxheSBPbiBGcm9udA==</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_End" Module="In-Commerce" Type="1">RW5k</PHRASE>
<PHRASE Label="la_col_EndedOn" Module="In-Commerce" Type="1">RW5kZWQgT24=</PHRASE>
<PHRASE Label="la_col_Expiration" Module="In-Commerce" Type="1">RXhwaXJhdGlvbg==</PHRASE>
<PHRASE Label="la_col_ExtendedPrice" Module="In-Commerce" Type="1">RXh0LiBQcmljZQ==</PHRASE>
<PHRASE Label="la_col_FileName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_FilePath" Module="In-Commerce" Type="1">RmlsZW5hbWU=</PHRASE>
<PHRASE Label="la_col_FlatSurcharge" Module="In-Commerce" Type="1">RmxhdCBTdXJjaGFyZ2U=</PHRASE>
<PHRASE Label="la_col_FromAmount" Module="In-Commerce" Type="1">RnJvbSBBbW91bnQ=</PHRASE>
<PHRASE Label="la_col_FromToUser" Module="In-Commerce" Type="1">RnJvbS9UbyBVc2Vy</PHRASE>
<PHRASE Label="la_col_FromUser" Module="In-Commerce" Type="1">RnJvbSBVc2Vy</PHRASE>
<PHRASE Label="la_col_Group" Module="In-Commerce" Type="1">R3JvdXA=</PHRASE>
<PHRASE Label="la_col_IPAddress" Module="In-Commerce" Type="1">SVAgQWRkcmVzcw==</PHRASE>
<PHRASE Label="la_col_ISOCode" Module="In-Commerce" Type="1">SVNPIENvZGU=</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_LastUsedBy" Module="In-Commerce" Type="1">TGFzdCBVc2VkIEJ5</PHRASE>
<PHRASE Label="la_col_LastUsedOn" Module="In-Commerce" Type="1">TGFzdCBVc2VkIE9u</PHRASE>
<PHRASE Label="la_col_Listable" Module="In-Commerce" Type="1">TGlzdGFibGU=</PHRASE>
<PHRASE Label="la_col_ListingQuantity" Module="In-Commerce" Type="1">TGlzdGluZyBRdHk=</PHRASE>
<PHRASE Label="la_col_Manufacturer" Module="In-Commerce" Type="1">TWFudWZhY3R1cmVy</PHRASE>
<PHRASE Label="la_col_ManufacturerName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_MaxQty" Module="In-Commerce" Type="1">TWF4IFF0eQ==</PHRASE>
<PHRASE Label="la_col_MinQty" Module="In-Commerce" Type="1">TWluIFF0eQ==</PHRASE>
<PHRASE Label="la_col_Negotiated" Module="In-Commerce" Type="1">TmVnb3RpYXRlZA==</PHRASE>
<PHRASE Label="la_col_NumberOfUses" Module="In-Commerce" Type="1">TnVtYmVyIE9mIFVzZXM=</PHRASE>
<PHRASE Label="la_col_OnHold" Module="In-Commerce" Type="1">T24gSG9sZA==</PHRASE>
<PHRASE Label="la_col_OnSale" Module="In-Commerce" Type="1">T24gU2FsZQ==</PHRASE>
<PHRASE Label="la_col_OptionType" Module="In-Commerce" Type="1">T3B0aW9uIFR5cGU=</PHRASE>
<PHRASE Label="la_col_OrderDate" Module="In-Commerce" Type="1">RGF0ZQ==</PHRASE>
<PHRASE Label="la_col_OrderIP" Module="In-Commerce" Type="1">SVAgQWRkcmVzcw==</PHRASE>
<PHRASE Label="la_col_OrderNumber" Module="In-Commerce" Type="1">TnVtYmVy</PHRASE>
<PHRASE Label="la_col_OrderTotal" Module="In-Commerce" Type="1">T3JkZXIgVG90YWw=</PHRASE>
<PHRASE Label="la_col_PaymentDate" Module="In-Commerce" Type="1">UGF5bWVudCBEYXRl</PHRASE>
<PHRASE Label="la_col_PaymentReference" Module="In-Commerce" Type="1">UGF5bWVudCBSZWZlcmVuY2U=</PHRASE>
<PHRASE Label="la_col_PaymentType" Module="In-Commerce" Type="1">UGF5bWVudCBUeXBl</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_PercentSurcharge" Module="In-Commerce" Type="1">UGVyY2VudCBTdXJjaGFyZ2U=</PHRASE>
<PHRASE Label="la_col_PlanName" Module="In-Commerce" Type="1">UGxhbiBOYW1l</PHRASE>
<PHRASE Label="la_col_PlanType" Module="In-Commerce" Type="1">UGxhbiBUeXBl</PHRASE>
<PHRASE Label="la_col_Points" Module="In-Commerce" Type="1">UG9pbnRz</PHRASE>
<PHRASE Label="la_col_Price" Module="In-Commerce" Type="1">UHJpY2U=</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_ProductType" Module="In-Commerce" Type="1">VHlwZQ==</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_Qty" Module="In-Commerce" Type="0">UXR5</PHRASE>
<PHRASE Label="la_col_QtyBackordered" Module="In-Commerce" Type="0">QmFja29yZGVyZWQ=</PHRASE>
<PHRASE Label="la_col_QtyInStock" Module="In-Commerce" Type="1">UXR5IEluIFN0b2Nr</PHRASE>
<PHRASE Label="la_col_QtyInStockMin" Module="In-Commerce" Type="1">UXR5SW5TdG9ja01pbg==</PHRASE>
<PHRASE Label="la_col_QtyOnOrder" Module="In-Commerce" Type="1">UXR5IE9uIE9yZGVy</PHRASE>
<PHRASE Label="la_col_QtyReserved" Module="In-Commerce" Type="1">UXR5IFJlc2VydmVk</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_RateToPrimary" Module="In-Commerce" Type="1">UmF0ZSBUbyBQcmltYXJ5</PHRASE>
<PHRASE Label="la_col_RegisteredOn" Module="In-Commerce" Type="1">UmVnaXN0ZXJlZCBPbg==</PHRASE>
<PHRASE Label="la_col_RemainingAmount" Module="In-Commerce" Type="1">UmVtYWluaW5nIEFtb3VudA==</PHRASE>
<PHRASE Label="la_col_Required" Module="In-Commerce" Type="1">UmVxdWlyZWQ=</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_ShippingName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_ShippingQuoteEngineName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_col_ShippingType" Module="In-Commerce" Type="1">VHlwZQ==</PHRASE>
<PHRASE Label="la_col_Size" Module="In-Commerce" Type="1">U2l6ZQ==</PHRASE>
<PHRASE Label="la_col_SKU" Module="In-Commerce" Type="1">U0tV</PHRASE>
<PHRASE Label="la_col_Start" Module="In-Commerce" Type="1">U3RhcnQ=</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_col_TaxApplyToProcessing" Module="In-Commerce" Type="1">QXBwbHkgdG8gUHJvY2Vzc2luZw==</PHRASE>
<PHRASE Label="la_col_TaxApplyToShipping" Module="In-Commerce" Type="1">QXBwbHkgdG8gU2hpcHBpbmc=</PHRASE>
<PHRASE Label="la_col_TaxValue" Module="In-Commerce" Type="1">VGF4IFZhbHVl</PHRASE>
<PHRASE Label="la_col_ToAmount" Module="In-Commerce" Type="1">VG8gQW1vdW50</PHRASE>
<PHRASE Label="la_col_TotalAmount" Module="In-Commerce" Type="1">VG90YWwgQW1vdW50</PHRASE>
<PHRASE Label="la_col_UnitsLimit" Module="In-Commerce" Type="1">TGltaXQ=</PHRASE>
<PHRASE Label="la_col_URL" Module="In-Commerce" Type="1">VVJM</PHRASE>
<PHRASE Label="la_col_Weight" Module="In-Commerce" Type="1">V2VpZ2h0</PHRASE>
<PHRASE Label="la_col_ZoneName" Module="In-Commerce" Type="1">Wm9uZSBuYW1l</PHRASE>
<PHRASE Label="la_col_ZoneType" Module="In-Commerce" Type="1">Wm9uZSBUeXBl</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_ProductsByManuf" Module="In-Commerce" Type="0">UHJvZHVjdHMgYnkgbWFudWZhY3R1cmVy</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_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_descending" Module="In-Commerce" Type="1">RGVzY2VuZGluZw==</PHRASE>
<PHRASE Label="la_Description_in-commerce" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgSW4tY29tbWVyY2Ugc2V0dGluZ3Mu</PHRASE>
<PHRASE Label="la_Description_in-commerce:affiliates_folder" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIGFmZmlsaWF0ZXMsIGFmZmlsYXRlIHBsYW5zIGFuZCBhZmZpbGF0ZSBwYXltZW50IHR5cGVz</PHRASE>
<PHRASE Label="la_Description_in-commerce:configuration_custom" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIGN1c3RvbSBmaWVsZHMgb2YgSW4tY29tbWVyY2Uu</PHRASE>
<PHRASE Label="la_Description_in-commerce:contacts" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtb2RpZnkgdGhlIG9ubGluZSBzdG9yZSBjb250YWN0IGFuZCBTaGlwIEZyb20gaW5mb3JtYXRpb24u</PHRASE>
<PHRASE Label="la_Description_in-commerce:currencies" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBjdXJyZW5jaWVzLCBhbmQgdXBkYXRlIHRoZWlyIGV4Y2hhbmdlIHJhdGUu</PHRASE>
<PHRASE Label="la_Description_in-commerce:discounts_folder" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIERpc2NvdW50cyBhbmQgQ291cG9ucy4=</PHRASE>
<PHRASE Label="la_Description_in-commerce:downloadlog" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBkb3dubG9hZHMgbG9nIGZvciBjb3JyZXNwb25kaW5nIHByb2R1Y3Rz</PHRASE>
<PHRASE Label="la_Description_in-commerce:general" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtb2RpZnkgdGhlIEdlbmVyYWwgc2V0dGluZ3Mgb2YgSW4tY29tbWVyY2Uu</PHRASE>
<PHRASE Label="la_Description_in-commerce:incommerce_affiliate_plans" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIGFmZmlsaWF0ZXMsIGFmZmlsYXRlIHBsYW5zIGFuZCBhZmZpbGF0ZSBwYXltZW50IHR5cGVz</PHRASE>
<PHRASE Label="la_Description_in-commerce:incommerce_confg" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtb2RpZnkgdGhlIEdlbmVyYWwgc2V0dGluZ3Mgb2YgSW4tY29tbWVyY2Uu</PHRASE>
<PHRASE Label="la_Description_in-commerce:incommerce_configemail" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIGVtYWlsIGV2ZW50cyBjb25maWd1cmF0aW9uLg==</PHRASE>
<PHRASE Label="la_Description_in-commerce:incommerce_configoutput" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtb2RpZnkgdGhlIHN0b3JlZnJvbnQgb3V0cHV0IG9wdGlvbnMu</PHRASE>
<PHRASE Label="la_Description_in-commerce:incommerce_configsearch" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIHN0b3JlZnJvbnQgc2VhcmNoIHNldHRpbmdzLg==</PHRASE>
<PHRASE Label="la_Description_in-commerce:incommerce_contacts" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtb2RpZnkgdGhlIG9ubGluZSBzdG9yZSBjb250YWN0IGFuZCBTaGlwIEZyb20gaW5mb3JtYXRpb24u</PHRASE>
<PHRASE Label="la_Description_in-commerce:incommerce_customfields" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIGN1c3RvbSBmaWVsZHMgb2YgSW4tY29tbWVyY2Uu</PHRASE>
<PHRASE Label="la_Description_in-commerce:incommerce_shipping" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIFNoaXBwaW5nIG9wdGlvbnMu</PHRASE>
<PHRASE Label="la_Description_in-commerce:manufacturers" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIGxpc3Qgb2YgbWFudWZhY3R1cmVycy4=</PHRASE>
<PHRASE Label="la_Description_in-commerce:orders" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIG9ubGluZSBzdG9yZSBPcmRlcnMu</PHRASE>
<PHRASE Label="la_Description_in-commerce:output" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtb2RpZnkgdGhlIHN0b3JlZnJvbnQgb3V0cHV0IG9wdGlvbnMu</PHRASE>
<PHRASE Label="la_Description_in-commerce:paymentlog" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIHNob3dzIHRoZSBsb2cgb2YgYWxsIGFmZmlsaWF0ZSBjb21taXNzaW9uIHBheW1lbnRz</PHRASE>
<PHRASE Label="la_Description_in-commerce:payment_types" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIFBheW1lbnQgdHlwZXMu</PHRASE>
<PHRASE Label="la_Description_in-commerce:reports" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBydW4gYW5kIHJldmlldyBkaWZmZXJlbnQgdHlwZXMgb2YgU2FsZXMgUmVwb3J0cy4=</PHRASE>
<PHRASE Label="la_Description_in-commerce:search" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIHN0b3JlZnJvbnQgc2VhcmNoIHNldHRpbmdzLg==</PHRASE>
<PHRASE Label="la_Description_in-commerce:shipping_folder" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIFNoaXBwaW5nIG9wdGlvbnMu</PHRASE>
<PHRASE Label="la_Description_in-commerce:taxes" Module="In-Commerce" Type="1">VGhpcyBzZWN0aW9uIGFsbG93cyB0byBtYW5hZ2UgdGhlIHRheGVzLg==</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_event_prod_affiliate.payment" Module="In-Commerce" Type="1">QWZmaWxpYXRlIHBheW1lbnQgaXNzdWVk</PHRASE>
<PHRASE Label="la_event_prod_affiliate.payment_type_changed" Module="In-Commerce" Type="1">QWZmaWxpYXRlIHBheW1lbnQgdHlwZSBjaGFuZ2Vk</PHRASE>
<PHRASE Label="la_event_prod_affiliate.register" Module="In-Commerce" Type="1">QWZmaWxpYXRlIHJlZ2lzdGVyZWQ=</PHRASE>
<PHRASE Label="la_event_prod_affiliate.registration_approved" Module="In-Commerce" Type="1">QWZmaWxpYXRlIHJlZ2lzdHJhdGlvbiBhcHByb3ZlZA==</PHRASE>
<PHRASE Label="la_event_prod_affiliate.registration_denied" Module="In-Commerce" Type="1">QWZmaWxpYXRlIHJlZ2lzdHJhdGlvbiBkZW5pZWQ=</PHRASE>
<PHRASE Label="la_event_prod_backorder.add" Module="In-Commerce" Type="1">QmFja29yZGVyIEFkZGVk</PHRASE>
<PHRASE Label="la_event_prod_backorder.fullfill" Module="In-Commerce" Type="1">QmFja29yZGVyIEZ1bGxmaWxsZWQ=</PHRASE>
<PHRASE Label="la_event_prod_backorder.process" Module="In-Commerce" Type="1">QmFja29yZGVyIFByb2Nlc3NlZA==</PHRASE>
<PHRASE Label="la_event_prod_order.approve" Module="In-Commerce" Type="1">T3JkZXIgQXBwcm92ZWQ=</PHRASE>
<PHRASE Label="la_event_prod_order.deny" Module="In-Commerce" Type="1">T3JkZXIgRGVuaWVk</PHRASE>
<PHRASE Label="la_event_prod_order.ship" Module="In-Commerce" Type="1">T3JkZXIgU2hpcHBlZA==</PHRASE>
<PHRASE Label="la_event_prod_order.submit" Module="In-Commerce" Type="1">T3JkZXIgU3VibWl0dGVk</PHRASE>
<PHRASE Label="la_event_user.GiftCertificate" Module="In-Commerce" Type="1">R2lmdCBDZXJ0aWZpY2F0ZQ==</PHRASE>
<PHRASE Label="la_event_user.suggest_product" Module="In-Commerce" Type="1">U3VnZ2VzdCBwcm9kdWN0IHRvIGEgZnJpZW5k</PHRASE>
<PHRASE Label="la_event_user.suggest_site" Module="In-Commerce" Type="1">U3VnZ2VzdCBzaXRlIHRvIGEgZnJpZW5k</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">QWNjZXNzIER1cmF0aW9u</PHRASE>
<PHRASE Label="la_fld_AccessDurationType" Module="In-Commerce" Type="1">QWNjZXNzIER1cmF0aW9uIFR5cGU=</PHRASE>
<PHRASE Label="la_fld_AccessDurationUnit" Module="In-Commerce" Type="1">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">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_AffiliateId" Module="In-Commerce" Type="1">QWZmaWxpYXRlIElE</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_AffiliatePlanId" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFBsYW4gSUQ=</PHRASE>
<PHRASE Label="la_fld_AffiliatePlanPayment" Module="In-Commerce" Type="1">UGF5bWVudA==</PHRASE>
<PHRASE Label="la_fld_AffiliateUser" Module="In-Commerce" Type="1">QWZmaWxpYXRlIFVzZXI=</PHRASE>
<PHRASE Label="la_fld_AllowedShippingTypes" Module="In-Commerce" Type="1">U2VsZWN0ZWQ=</PHRASE>
<PHRASE Label="la_fld_Amount" Module="In-Commerce" Type="1">QW1vdW50</PHRASE>
<PHRASE Label="la_fld_AmountToPay" Module="In-Commerce" Type="1">QW1vdW50IFRvIFBheQ==</PHRASE>
<PHRASE Label="la_fld_AuthorizationResult" Module="In-Commerce" Type="1">QXV0aG9yaXphdGlvbiBSZXN1bHQ=</PHRASE>
<PHRASE Label="la_fld_Availability" Module="In-Commerce" Type="1">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">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">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_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">Q09EIEFsbG93ZWQ=</PHRASE>
<PHRASE Label="la_fld_Code" Module="In-Commerce" Type="1">Q29kZQ==</PHRASE>
<PHRASE Label="la_fld_CODFlatSurcharge" Module="In-Commerce" Type="1">Q09EIEZsYXQgU3VyY2hhcmdl</PHRASE>
<PHRASE Label="la_fld_CODPercentSurcharge" Module="In-Commerce" Type="1">Q09EIFBlcmNlbnQgU3VyY2hhcmdl</PHRASE>
<PHRASE Label="la_fld_Comment" Module="In-Commerce" Type="1">Q29tbWVudA==</PHRASE>
<PHRASE Label="la_fld_Cost" Module="In-Commerce" Type="1">Q29zdA==</PHRASE>
<PHRASE Label="la_fld_CostType" Module="In-Commerce" Type="1">Q29zdCBUeXBl</PHRASE>
<PHRASE Label="la_fld_CouponCode" Module="In-Commerce" Type="1">Q291cG9uIENvZGU=</PHRASE>
<PHRASE Label="la_fld_CouponId" Module="In-Commerce" Type="1">SWQ=</PHRASE>
<PHRASE Label="la_fld_CreditCardNumber" Module="In-Commerce" Type="1">Q3JlZGl0IENhcmQgTnVtYmVy</PHRASE>
<PHRASE Label="la_fld_CurrencyId" Module="In-Commerce" Type="1">SUQ=</PHRASE>
<PHRASE Label="la_fld_CurrencyName" Module="In-Commerce" Type="1">TmFtZQ==</PHRASE>
<PHRASE Label="la_fld_CurrencySymbol" Module="In-Commerce" Type="1">U3ltYm9s</PHRASE>
<PHRASE Label="la_fld_CurrencySymbolPosition" Module="In-Commerce" Type="1">U3ltYm9sIFBvc2l0aW9u</PHRASE>
<PHRASE Label="la_fld_CustomerName" Module="In-Commerce" Type="1">Q3VzdG9tZXIgTmFtZQ==</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_DiscountId" Module="In-Commerce" Type="1">SUQ=</PHRASE>
<PHRASE Label="la_fld_DisplayOnFront" Module="In-Commerce" Type="1">RGlzcGxheSBPbiBGcm9udA==</PHRASE>
<PHRASE Label="la_fld_EmptyCellsAre" Module="In-Commerce" Type="1">RW1wdHkgQ2VsbHMgQXJl</PHRASE>
<PHRASE Label="la_fld_End" Module="In-Commerce" Type="1">RW5kIERhdGU=</PHRASE>
<PHRASE Label="la_fld_EngineId" Module="In-Commerce" Type="1">SUQ=</PHRASE>
<PHRASE Label="la_fld_Expiration" Module="In-Commerce" Type="1">RXhwaXJhdGlvbg==</PHRASE>
<PHRASE Label="la_fld_Featured" Module="In-Commerce" Type="1">RmVhdHVyZWQ=</PHRASE>
<PHRASE Label="la_fld_FilePath" Module="In-Commerce" Type="1">RmlsZQ==</PHRASE>
<PHRASE Label="la_fld_FirstDayDelivery" Module="In-Commerce" Type="1">Rmlyc3QgRGF5</PHRASE>
<PHRASE Label="la_fld_FlatSurcharge" Module="In-Commerce" Type="1">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">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_GroundDelivery" Module="In-Commerce" Type="1">R3JvdW5kIERlbGl2ZXJ5</PHRASE>
<PHRASE Label="la_fld_Group" Module="In-Commerce" Type="1">VXNlciBHcm91cA==</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_ISOCode" Module="In-Commerce" Type="1">SVNPIENvZGU=</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">TGFzdCBVc2VkIEJ5</PHRASE>
<PHRASE Label="la_fld_LastUsedOn" Module="In-Commerce" Type="1">TGFzdCBVc2VkIE9u</PHRASE>
<PHRASE Label="la_fld_Listable" Module="In-Commerce" Type="1">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">TWFudWZhY3R1cmVy</PHRASE>
<PHRASE Label="la_fld_ManufacturerId" Module="In-Commerce" Type="1">TWFudWZhY3R1cmVyIElk</PHRASE>
<PHRASE Label="la_fld_MaxQty" Module="In-Commerce" Type="1">TWF4IFF0eQ==</PHRASE>
<PHRASE Label="la_fld_MinimumPaymentAmount" Module="In-Commerce" Type="1">TWluaW1hbCBQYXltZW50IEFtb3VudA==</PHRASE>
<PHRASE Label="la_fld_MinQty" Module="In-Commerce" Type="1">TWluIFF0eQ==</PHRASE>
<PHRASE Label="la_fld_MSRP" Module="In-Commerce" Type="1">TVNSUA==</PHRASE>
<PHRASE Label="la_fld_Negotiated" Module="In-Commerce" Type="1">TmVnb3RpYXRlZA==</PHRASE>
<PHRASE Label="la_fld_NextCharge" Module="In-Commerce" Type="1">TmV4dCBDaGFyZ2UgRGF0ZQ==</PHRASE>
<PHRASE Label="la_fld_NumberOfUses" Module="In-Commerce" Type="1">TnVtYmVyIE9mIFVzZXM=</PHRASE>
<PHRASE Label="la_fld_OnHold" Module="In-Commerce" Type="1">T24gSG9sZA==</PHRASE>
<PHRASE Label="la_fld_OnSale" Module="In-Commerce" Type="1">UHJvZHVjdCBvbiBTYWxl</PHRASE>
<PHRASE Label="la_fld_OptionId" Module="In-Commerce" Type="1">T3B0aW9uSWQ=</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">T3B0aW9uIFR5cGU=</PHRASE>
<PHRASE Label="la_fld_OptionValue" Module="In-Commerce" Type="1">T3B0aW9uIFZhbHVl</PHRASE>
<PHRASE Label="la_fld_OrderId" Module="In-Commerce" Type="1">T3JkZXIgSUQ=</PHRASE>
<PHRASE Label="la_fld_OrderIP" Module="In-Commerce" Type="1">SVAgQWRkcmVzcw==</PHRASE>
<PHRASE Label="la_fld_OrderNumber" Module="In-Commerce" Type="1">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">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">UGF5bWVudCBSZWZlcmVuY2U=</PHRASE>
<PHRASE Label="la_fld_PaymentType" Module="In-Commerce" Type="1">UGF5bWVudCBUeXBl</PHRASE>
<PHRASE Label="la_fld_PaymentTypeCurrencies" Module="In-Commerce" Type="1">QXZhaWxhYmxlIEN1cnJlbmNpZXM=</PHRASE>
<PHRASE Label="la_fld_PaymentTypeId" Module="In-Commerce" Type="1">UGF5bWVudCBUeXBlIElE</PHRASE>
<PHRASE Label="la_fld_PercentSurcharge" Module="In-Commerce" Type="1">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">UGxhbiBUeXBl</PHRASE>
<PHRASE Label="la_fld_Points" Module="In-Commerce" Type="1">UG9pbnRz</PHRASE>
<PHRASE Label="la_fld_Price" Module="In-Commerce" Type="1">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_ProductId" Module="In-Commerce" Type="1">SUQ=</PHRASE>
<PHRASE Label="la_fld_ProductType" Module="In-Commerce" Type="1">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_Qty" Module="In-Commerce" Type="1">UXVhbnRpdHk=</PHRASE>
<PHRASE Label="la_fld_QtyBackOrdered" Module="In-Commerce" Type="1">UXR5IEJhY2tPcmRlcmVk</PHRASE>
<PHRASE Label="la_fld_QtyInStock" Module="In-Commerce" Type="1">UXR5IEluIFN0b2Nr</PHRASE>
<PHRASE Label="la_fld_QtyInStockMin" Module="In-Commerce" Type="1">TWluaW11bSBxdWFudGl0eSBpbiBzdG9jayB0aHJlc2hvbGQ=</PHRASE>
<PHRASE Label="la_fld_QtyOnOrder" Module="In-Commerce" Type="1">UXR5IE9uIE9yZGVy</PHRASE>
<PHRASE Label="la_fld_QtyReserved" Module="In-Commerce" Type="1">UXR5IFJlc2VydmVk</PHRASE>
<PHRASE Label="la_fld_QtySold" Module="In-Commerce" Type="1">UXR5IFNvbGQ=</PHRASE>
<PHRASE Label="la_fld_RateToPrimary" Module="In-Commerce" Type="1">UmF0ZSBUbyBQcmltYXJ5</PHRASE>
<PHRASE Label="la_fld_RecipientName" Module="In-Commerce" Type="1">UmVjaXBpZW50J3MgTmFtZQ==</PHRASE>
<PHRASE Label="la_fld_RegisteredOn" Module="In-Commerce" Type="1">UmVnaXN0ZXJlZCBPbg==</PHRASE>
<PHRASE Label="la_fld_RemainingAmount" Module="In-Commerce" Type="1">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_SenderName" Module="In-Commerce" Type="1">U2VuZGVyJ3MgTmFtZQ==</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">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_ShippingId" Module="In-Commerce" Type="1">SUQ=</PHRASE>
<PHRASE Label="la_fld_ShippingMode" Module="In-Commerce" Type="1">QWxsb3dlZCBTaGlwcGluZyBUeXBlcw==</PHRASE>
<PHRASE Label="la_fld_ShippingName" Module="In-Commerce" Type="1">TmFtZQ==</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">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">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_SKU" Module="In-Commerce" Type="1">U0tV</PHRASE>
<PHRASE Label="la_fld_SpeedCode" Module="In-Commerce" Type="1">U3BlZWQgQ29kZQ==</PHRASE>
<PHRASE Label="la_fld_SSN" Module="In-Commerce" Type="1">U1NOL1RheCBJZC9WQVQgTnVtYmVy</PHRASE>
<PHRASE Label="la_fld_Start" Module="In-Commerce" Type="1">U3RhcnQgRGF0ZQ==</PHRASE>
<PHRASE Label="la_fld_SubTotal" Module="In-Commerce" Type="1">U3VidG90YWw=</PHRASE>
<PHRASE Label="la_fld_TaxApplyToProcessing" Module="In-Commerce" Type="1">QXBwbHkgdG8gUHJvY2Vzc2luZw==</PHRASE>
<PHRASE Label="la_fld_TaxApplyToShipping" Module="In-Commerce" Type="1">QXBwbHkgdG8gU2hpcHBpbmc=</PHRASE>
<PHRASE Label="la_fld_TaxValue" Module="In-Commerce" Type="1">VGF4IFZhbHVl</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">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">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">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_VerificationResult" Module="In-Commerce" Type="1">VmVyaWZpY2F0aW9uIFJlc3VsdA==</PHRASE>
<PHRASE Label="la_fld_Weight" Module="In-Commerce" Type="1">V2VpZ2h0</PHRASE>
<PHRASE Label="la_fld_WeightType" Module="In-Commerce" Type="1">V2VpZ2h0IE1vZGlmaWVyIFR5cGU=</PHRASE>
<PHRASE Label="la_fld_ZoneId" Module="In-Commerce" Type="1">SUQ=</PHRASE>
<PHRASE Label="la_fld_ZoneName" Module="In-Commerce" Type="1">Wm9uZSBOYW1l</PHRASE>
<PHRASE Label="la_fld_ZoneType" Module="In-Commerce" Type="1">VHlwZQ==</PHRASE>
<PHRASE Label="la_fld_Zone_Name" Module="In-Commerce" Type="1">Wm9uZSBOYW1l</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_Hot" Module="In-Commerce" Type="1">VG9wIHNlbGxlcg==</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">SW4tY29tbWVyY2U=</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="0">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_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_opt_Email" Module="In-Commerce" Type="1">RS1tYWls</PHRASE>
<PHRASE Label="la_opt_Exchange" Module="In-Commerce" Type="1">RXhjaGFuZ2U=</PHRASE>
<PHRASE Label="la_opt_List" Module="In-Commerce" Type="1">TGlzdGluZw==</PHRASE>
<PHRASE Label="la_opt_PostalMail" Module="In-Commerce" Type="1">UG9zdGFsIE1haWw=</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_Warranty" Module="In-Commerce" Type="1">V2FycmFudHk=</PHRASE>
<PHRASE Label="la_OrderMainNumberDigits" Module="In-Commerce" Type="1">T3JkZXIgbWFpbiBudW1iZXIgZGlnaXRz</PHRASE>
<PHRASE Label="la_OrderNumberFormatP" Module="In-Commerce" Type="1">T3JkZXIgbnVtYmVyIGZvcm1hdCwgcHJpbWFyeQ==</PHRASE>
<PHRASE Label="la_OrderNumberFormatS" Module="In-Commerce" Type="1">T3JkZXIgbnVtYmVyIGZvcm1hdCwgc2Vjb25kYXJ5</PHRASE>
<PHRASE Label="la_OrderReturnTotal" Module="In-Commerce" Type="1">UmV0dXJuZWQ=</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_PaymentTypeDescription" Module="In-Commerce" Type="1">RGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="la_PaymentTypeId" Module="In-Commerce" Type="1">SUQ=</PHRASE>
<PHRASE Label="la_PaymentTypeInstructions" Module="In-Commerce" Type="1">SW5zdHJ1Y3Rpb25z</PHRASE>
<PHRASE Label="la_PaymentTypeName" Module="In-Commerce" Type="1">TmFtZQ==</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_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_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_SearchReset" Module="In-Commerce" Type="1">UmVzZXQ=</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_SearchFields" Module="In-Commerce" Type="1">U2VhcmNoIEZpZWxkcw==</PHRASE>
<PHRASE Label="la_section_SearchResults" Module="In-Commerce" Type="1">U2VhcmNoIFJlc3VsdHM=</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_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="0">U2hpcCBhbGwgaXRlbXMgdG9nZXRoZXI=</PHRASE>
<PHRASE Label="la_ship_backorders_upon_avail" Module="In-Commerce" Type="0">U2hpcCBiYWNrb3JkZXJzIHVwb24gYXZhaWxhYmxl</PHRASE>
<PHRASE Label="la_ship_backorder_separately" Module="In-Commerce" Type="0">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">RGlzY291bnRzICYgQ291cG9ucw==</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_RealtimeShippingTypes" Module="In-Commerce" Type="1">UmVhbHRpbWUgU2hpcHBpbmcgVHlwZXM=</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_ShipmentQuoteEngines" Module="In-Commerce" Type="1">U2hpcG1lbnQgUXVvdGUgRW5naW5lcw==</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_TaxUsers" Module="In-Commerce" Type="1">VXNlcnM=</PHRASE>
<PHRASE Label="la_tab_ToShip" Module="In-Commerce" Type="1">VG8gU2hpcA==</PHRASE>
<PHRASE Label="la_TextDecoration" Module="In-Commerce" Type="1">VGV4dCBEZWNvcmF0aW9u</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_Discounts" Module="In-Commerce" Type="1">RGlzY291bnRz</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_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_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_Shipping_Types" Module="In-Commerce" Type="1">U2hpcHBpbmcgVHlwZXM=</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_Order_Item" Module="In-Commerce" Type="1">QWRkaW5nIE9yZGVyIEl0ZW0=</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_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_DownloadLog" Module="In-Commerce" Type="1">RG93bmxvYWQgTG9n</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_PaymentLog" Module="In-Commerce" Type="1">VHJhbnNhY3Rpb25z</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_SalesReports" Module="In-Commerce" Type="1">U2FsZXMgUmVwb3J0</PHRASE>
<PHRASE Label="la_title_ShipmentQuoteEngines" Module="In-Commerce" Type="1">U2hpcG1lbnQgUXVvdGUgRW5naW5lcw==</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_ToolTipNew_Product" Module="In-Commerce" Type="1">TmV3IFByb2R1Y3Q=</PHRASE>
<PHRASE Label="la_Tooltip_Add_Items" Module="In-Commerce" Type="1">QWRkIEl0ZW1z</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_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_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_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_SaveAndEmail" Module="In-Commerce" Type="1">RS1tYWls</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_updating_currencies" Module="In-Commerce" Type="1">VXBkYXRpbmcgQ3VycmVuY2llcw==</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="lu_AdditionalInfo" Module="In-Commerce" Type="0">QWRkaXRpb25hbCBJbmZv</PHRASE>
<PHRASE Label="lu_addressmodificationblocked" Module="In-Commerce" Type="0">QWRkcmVzcyBpcyBsb2NrZWQgZm9yIG1vZGlmaWNhdGlvbnM=</PHRASE>
<PHRASE Label="lu_AddressUsedAs" Module="In-Commerce" Type="0">QWRkcmVzcyBVc2VkIEFz</PHRASE>
<PHRASE Label="lu_add_to_cart" Module="In-Commerce" Type="0">QWRkIFRvIFNob3BwaW5nIENhcnQ=</PHRASE>
<PHRASE Label="lu_AdjustShippingManually" Module="In-Commerce" Type="0">U3BsaXQgeW91ciBvcmRlciBhbmQgY2hhbmdlIHNoaXBwaW5nIG9wdGlvbnM=</PHRASE>
<PHRASE Label="lu_Affiliate" Module="In-Commerce" Type="0">QWZmaWxpYXRl</PHRASE>
<PHRASE Label="lu_affiliateispendingordisabled" Module="In-Commerce" Type="0">WW91ciBBZmZsaWF0ZSBhY2NvdW50IGlzIHBlbmRpbmcgb3IgZGlzYWJsZWQ=</PHRASE>
<PHRASE Label="lu_AffiliateMaterials" Module="In-Commerce" Type="0">QWZmaWxpYXRlIE1hdGVyaWFscw==</PHRASE>
<PHRASE Label="lu_AffiliateMaterialsText" Module="In-Commerce" Type="0">QWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIC0gbGlua3MsIGNvZGUgc2FtcGxlcywgYmFubmVycyBldGMu</PHRASE>
<PHRASE Label="lu_AffiliatePayments" Module="In-Commerce" Type="0">QWZmaWxpYXRlIFBheW1lbnRz</PHRASE>
<PHRASE Label="lu_AffiliatePaymentsText" Module="In-Commerce" Type="0">TG9nIG9mIGNvbW1pc3Npb24gcGF5bWVudHM=</PHRASE>
<PHRASE Label="lu_affiliatepaymenttypechangedmessage" Module="In-Commerce" Type="0">VGhhbmtzIHlvdS4gWW91ciBwYXltZW50IHR5cGUgaGFzIGJlZW4gY2hhbmdlZC4=</PHRASE>
<PHRASE Label="lu_AffiliateStatisticsText" Module="In-Commerce" Type="0">VmlzaXRzIGFuZCBvcmRlcnMgc3RhdGlzdGljcw==</PHRASE>
<PHRASE Label="lu_all_available_backordered" Module="In-Commerce" Type="0">QWxsIGF2YWlsYWJsZS9iYWNrb3JkZXJlZCBpdGVtcw==</PHRASE>
<PHRASE Label="lu_BecomeAnAffiliateDescription" Module="In-Commerce" Type="0">SW5zdHJ1Y3Rpb25zIGFuZCBSZWd1bGF0aW9ucw==</PHRASE>
<PHRASE Label="lu_billing_Address" Module="In-Commerce" Type="0">QWRkcmVzcw==</PHRASE>
<PHRASE Label="lu_billing_BillingInformation" Module="In-Commerce" Type="0">QklMTElORyBJTkZPUk1BVElPTg==</PHRASE>
<PHRASE Label="lu_billing_BillingPhone" Module="In-Commerce" Type="0">UGxlYXNlIGVudGVyIHlvdXIgYmlsbGluZyBwaG9uZSBudW1iZXIgb24gZmlsZSB3aXRoIHlvdXIgY3JlZGl0IGNhcmQgY29tcGFueQ==</PHRASE>
<PHRASE Label="lu_billing_BillTo" Module="In-Commerce" Type="0">QmlsbCB0byAoTGFzdCBOYW1lLCBGaXJzdCBOYW1lKQ==</PHRASE>
<PHRASE Label="lu_billing_CardExp" Module="In-Commerce" Type="0">RXhwLg==</PHRASE>
<PHRASE Label="lu_billing_CardExpiration" Module="In-Commerce" Type="0">Q2FyZCBFeHBpcmF0aW9u</PHRASE>
<PHRASE Label="lu_billing_CardType" Module="In-Commerce" Type="0">Q2FyZCBUeXBl</PHRASE>
<PHRASE Label="lu_billing_ChoosePaymentOptions" Module="In-Commerce" Type="0">Q2hvb3NlIHlvdXIgcGF5bWVudCBvcHRpb25zIGJlbG93LiBZb3Ugd2lsbCBiZSBhYmxlIHRvIHJldmlldyB5b3VyIG9yZGVyIGJlZm9yZSBpdCBpcyBmaW5hbC4=</PHRASE>
<PHRASE Label="lu_billing_Company" Module="In-Commerce" Type="0">Q29tcGFueQ==</PHRASE>
<PHRASE Label="lu_billing_CostSummary" Module="In-Commerce" Type="0">Q09TVCBTVU1NQVJZ</PHRASE>
<PHRASE Label="lu_billing_CreditCard" Module="In-Commerce" Type="0">Q3JlZGl0IENhcmQ=</PHRASE>
<PHRASE Label="lu_billing_CreditCardNumber" Module="In-Commerce" Type="0">Q3JlZGl0IENhcmQgTnVtYmVy</PHRASE>
<PHRASE Label="lu_billing_CVV2" Module="In-Commerce" Type="0">Q1ZWMg==</PHRASE>
<PHRASE Label="lu_billing_Email" Module="In-Commerce" Type="0">RS1tYWls</PHRASE>
<PHRASE Label="lu_billing_FullName" Module="In-Commerce" Type="0">RnVsbCBOYW1l</PHRASE>
<PHRASE Label="lu_billing_NameOnCard" Module="In-Commerce" Type="0">TmFtZSBvbiB0aGUgQ2FyZA==</PHRASE>
<PHRASE Label="lu_billing_PaymentInfo" Module="In-Commerce" Type="0">UEFZTUVOVCBJTkZPUk1BVElPTg==</PHRASE>
<PHRASE Label="lu_billing_PaymentType" Module="In-Commerce" Type="0">UGF5bWVudCBUeXBl</PHRASE>
<PHRASE Label="lu_billing_Phone" Module="In-Commerce" Type="0">UGhvbmU=</PHRASE>
<PHRASE Label="lu_billing_Price" Module="In-Commerce" Type="0">UHJpY2U=</PHRASE>
<PHRASE Label="lu_billing_ProductTotal" Module="In-Commerce" Type="0">UHJvZHVjdCBUb3RhbA==</PHRASE>
<PHRASE Label="lu_billing_ShippingHandling" Module="In-Commerce" Type="0">U2hpcHBpbmcgJmFtcDsgSGFuZGxpbmc=</PHRASE>
<PHRASE Label="lu_billing_Subtotal" Module="In-Commerce" Type="0">U3VidG90YWw=</PHRASE>
<PHRASE Label="lu_billing_Tax" Module="In-Commerce" Type="0">VGF4</PHRASE>
<PHRASE Label="lu_billing_WireInstrictions" Module="In-Commerce" Type="0">V2lyZSB0cmFuc2ZlciBJbnN0cnVjdGlvbnM=</PHRASE>
<PHRASE Label="lu_billing_WireTransfer" Module="In-Commerce" Type="0">V0lSRSBUUkFOU0ZFUg==</PHRASE>
<PHRASE Label="lu_btn_BuyNow" Module="In-Commerce" Type="0">QnV5IE5vdw==</PHRASE>
<PHRASE Label="lu_btn_DownloadNow" Module="In-Commerce" Type="0">RG93bmxvYWQgTm93</PHRASE>
<PHRASE Label="lu_btn_ManageAddresses" Module="In-Commerce" Type="0">TWFuYWdlIEFkZHJlc3Nlcw==</PHRASE>
<PHRASE Label="lu_btn_NewAddress" Module="In-Commerce" Type="0">TmV3IEFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_btn_ProceedToPreview" Module="In-Commerce" Type="0">UHJvY2VlZCB0byBwcmV2aWV3</PHRASE>
<PHRASE Label="lu_btn_RateProduct" Module="In-Commerce" Type="0">UmF0ZSBQcm9kdWN0</PHRASE>
<PHRASE Label="lu_btn_RateThisProduct" Module="In-Commerce" Type="0">UmF0ZSB0aGlzIHByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_btn_RemoveFromWishList" Module="In-Commerce" Type="0">UmVtb3ZlIEZyb20gV2lzaCBMaXN0</PHRASE>
<PHRASE Label="lu_btn_reviewthisproduct" Module="In-Commerce" Type="0">UmV2aWV3IFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_btn_UpdateAddress" Module="In-Commerce" Type="0">VXBkYXRlIEFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_CancelRecurring_confirm" Module="In-Commerce" Type="0">UmVjdXJyaW5nIE9yZGVyIENhbmNlbCBDb25maXJtYXRpb24=</PHRASE>
<PHRASE Label="lu_cancelrecurring_confirmed" Module="In-Commerce" Type="0">UmVvY2N1cnJpbmcgYmlsbGluZyBpcyBjYW5jZWxlZC4=</PHRASE>
<PHRASE Label="lu_CancelRecurring_confirm_prompt" Module="In-Commerce" Type="0">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbCB0aGlzIHJlY3VycmluZyBvcmRlcj8=</PHRASE>
<PHRASE Label="lu_CancelRecurring_ok" Module="In-Commerce" Type="0">WW91ciByZWN1cnJpbmcgb3JkZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNhbmNlbGxlZA==</PHRASE>
<PHRASE Label="lu_CancelRecurring_title" Module="In-Commerce" Type="0">Q2FuY2VsIFJlY3VycmluZyBPcmRlcg==</PHRASE>
<PHRASE Label="lu_CartPrice" Module="In-Commerce" Type="0">UHJpY2U=</PHRASE>
<PHRASE Label="lu_CartQty" Module="In-Commerce" Type="0">UXR5</PHRASE>
<PHRASE Label="lu_CartTotal" Module="In-Commerce" Type="0">VG90YWw=</PHRASE>
<PHRASE Label="lu_cart_Backordered" Module="In-Commerce" Type="0">YmFja29yZGVyZWQ=</PHRASE>
<PHRASE Label="lu_cart_BackorderFlag" Module="In-Commerce" Type="0">KGJhY2tvcmRlcmVkKQ==</PHRASE>
<PHRASE Label="lu_cart_Checkout" Module="In-Commerce" Type="0">Q2hlY2tvdXQ=</PHRASE>
<PHRASE Label="lu_cart_ContinueShopping" Module="In-Commerce" Type="0">Q29udGludWUgU2hvcHBpbmc=</PHRASE>
<PHRASE Label="lu_Cart_FreeShippingAvailable" Module="In-Commerce" Type="0">ZnJlZSBzaGlwcGluZw==</PHRASE>
<PHRASE Label="lu_cart_Ordered" Module="In-Commerce" Type="0">T3JkZXJlZA==</PHRASE>
<PHRASE Label="lu_cart_OrderTotal" Module="In-Commerce" Type="0">T3JkZXIgVG90YWw=</PHRASE>
<PHRASE Label="lu_cart_Refresh" Module="In-Commerce" Type="0">UmVmcmVzaCBDYXJ0</PHRASE>
<PHRASE Label="lu_cart_Subtotal" Module="In-Commerce" Type="0">U3VidG90YWw=</PHRASE>
<PHRASE Label="lu_cart_TotalItems" Module="In-Commerce" Type="0">VG90YWwgSXRlbXM=</PHRASE>
<PHRASE Label="lu_cart_ViewCart" Module="In-Commerce" Type="0">VmlldyBDYXJ0</PHRASE>
<PHRASE Label="lu_cc_expired" Module="In-Commerce" Type="0">Q3JlZGl0IGNhcmQgaXMgZXhwaXJlZA==</PHRASE>
<PHRASE Label="lu_cc_validation_error" Module="In-Commerce" Type="0">Q3JlZGl0IGNhcmQgbnVtYmVyIGlzIGludmFsaWQ=</PHRASE>
<PHRASE Label="lu_changeaffiliatepaymenttypedescription" Module="In-Commerce" Type="0">UGxlYXNlIGNvbXBsZXRlIHRoZSBmb3JtIGJlbG93IHRvIGNoYW5nZSB5b3VyIGFmZmlsaWF0ZSBwYXltZW50IHR5cGUuIFRoZSBjaGFuZ2Ugd2lsbCB0YWtlIGVmZmVjdCBzdGFydGluZyBmcm9tIHRoZSBuZXh0IHNjaGVkdWxlZCBhZmZpbGlhdGUgcGF5bWVudC4=</PHRASE>
<PHRASE Label="lu_ChangePaymentType" Module="In-Commerce" Type="0">Q2hhbmdlIFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="lu_ChangePaymentTypeText" Module="In-Commerce" Type="0">UGF5bWVudCBvcHRpb25zIGZvciBhZmZpbGlhdGUgY29tbWlzc2lvbnM=</PHRASE>
<PHRASE Label="lu_col_ordercommissionearned" Module="In-Commerce" Type="0">Q29tbWlzc2lvbiBlYXJuZWQ=</PHRASE>
<PHRASE Label="lu_col_ordercount" Module="In-Commerce" Type="0">T3JkZXJz</PHRASE>
<PHRASE Label="lu_col_ordernumber" Module="In-Commerce" Type="0">T3JkZXIgIw==</PHRASE>
<PHRASE Label="lu_col_ordertotalamount" Module="In-Commerce" Type="0">VG90YWwgc2FsZXM=</PHRASE>
<PHRASE Label="lu_col_productDescription" Module="In-Commerce" Type="0">RGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="lu_col_productItems" Module="In-Commerce" Type="0">SXRlbXM=</PHRASE>
<PHRASE Label="lu_col_productPrice" Module="In-Commerce" Type="0">UHJpY2U=</PHRASE>
<PHRASE Label="lu_col_referer" Module="In-Commerce" Type="0">UmVmZXJyZXI=</PHRASE>
<PHRASE Label="lu_commAddressListText" Module="In-Commerce" Type="0">TWFuYWdlIHlvdXIgc2hpcHBpbmcgYW5kIGJpbGxpbmcgYWRkcmVzc2Vz</PHRASE>
<PHRASE Label="lu_comm_AccessDuration" Module="In-Commerce" Type="0">QWNjZXNzIER1cmF0aW9u</PHRASE>
<PHRASE Label="lu_comm_Actions" Module="In-Commerce" Type="0">QWN0aW9ucw==</PHRASE>
<PHRASE Label="lu_comm_Added" Module="In-Commerce" Type="0">QWRkZWQ=</PHRASE>
<PHRASE Label="lu_comm_AddedOn" Module="In-Commerce" Type="0">QWRkZWQgT24=</PHRASE>
<PHRASE Label="lu_comm_Address" Module="In-Commerce" Type="0">QWRkcmVzcw==</PHRASE>
<PHRASE Label="lu_comm_AddressLine" Module="In-Commerce" Type="0">QWRkcmVzcyBMaW5l</PHRASE>
<PHRASE Label="lu_comm_AddressList" Module="In-Commerce" Type="0">QWRkcmVzc2Vz</PHRASE>
<PHRASE Label="lu_comm_addtofav" Module="In-Commerce" Type="0">QWRkIFRvIEZhdm9yaXRlcw==</PHRASE>
<PHRASE Label="lu_comm_AddToFavourites" Module="In-Commerce" Type="0">QWRkIFRvIFdpc2ggTGlzdA==</PHRASE>
<PHRASE Label="lu_comm_AdvancedSearch" Module="In-Commerce" Type="0">QWR2YW5jZWQgU2VhcmNo</PHRASE>
<PHRASE Label="lu_comm_Affiliate" Module="In-Commerce" Type="0">QWZmaWxpYXRl</PHRASE>
<PHRASE Label="lu_comm_AffiliateAgreement" Module="In-Commerce" Type="0">YWZmaWxpYXRlIGFncmVlbWVudA==</PHRASE>
<PHRASE Label="lu_comm_AffiliateIsPendingOrDisabled" Module="In-Commerce" Type="0">WW91ciBhZmZpbGlhdGUgcmVnaXN0cmF0aW9uIGlzIHBlbmRpbmcgb3IgZGlzYWJsZWQuIElmIHlvdSBoYXZlIHJlZ2lzdGVyZWQgcmVjZW50bHksIHBsZWFzZSB3YWl0IHVudGlsIHRoZSBzaXRlIGFkbWluaXN0cmF0b3JzIGFwcHJvdmUgeW91ciBhcHBsaWNhdGlvbi4gWW91IHdpbGwgYmUgbm90aWZpZWQgdmlhIGUtbWFpbC4=</PHRASE>
<PHRASE Label="lu_comm_AffiliateMaterials" Module="In-Commerce" Type="0">SW5zdHJ1Y3Rpb25zL0FkdmVydGlzaW5nIE1hdGVyaWFscw==</PHRASE>
<PHRASE Label="lu_comm_AffiliateMaterialsText" Module="In-Commerce" Type="0">QWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIC0gbGlua3MsIGNvZGUgc2FtcGxlcywgYmFubmVycyBldGMu</PHRASE>
<PHRASE Label="lu_comm_AffiliatePayments" Module="In-Commerce" Type="0">UGF5bWVudHM=</PHRASE>
<PHRASE Label="lu_comm_AffiliatePaymentsText" Module="In-Commerce" Type="0">RGlzcGxheXMgcGF5bWVudHMgc3RhdGlzdGljcw==</PHRASE>
<PHRASE Label="lu_comm_AffiliatePaymentType" Module="In-Commerce" Type="0">QWZmaWxpYXRlIFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="lu_comm_AffiliatePaymentTypeChangedMessage" Module="In-Commerce" Type="0">WW91ciBhZmZpbGlhdGUgcGF5bWVudCB0eXBlIGhhcyBiZWVuIGNoYW5nZWQu</PHRASE>
<PHRASE Label="lu_comm_AffiliateRegistration" Module="In-Commerce" Type="0">QWZmaWxpYXRlIFJlZ2lzdHJhdGlvbg==</PHRASE>
<PHRASE Label="lu_comm_Affiliates" Module="In-Commerce" Type="0">QWZmaWxpYXRlcw==</PHRASE>
<PHRASE Label="lu_comm_AffiliateStat" Module="In-Commerce" Type="0">U3RhdGlzdGljcw==</PHRASE>
<PHRASE Label="lu_comm_AffiliateStatistics" Module="In-Commerce" Type="0">QWZmaWxpYXRlIFN0YXRpc3RpY3M=</PHRASE>
<PHRASE Label="lu_comm_AffiliateStatText" Module="In-Commerce" Type="0">RGlzcGxheXMgdmlzdGVycyBhbmQgb3JkZXJzIHN0YXRpc3RpY3M=</PHRASE>
<PHRASE Label="lu_comm_AffiliateText" Module="In-Commerce" Type="0">QWZmaWxpYXRlcyBzZWN0aW9uIC0gZGlzcGxheXMgc3RhdGlzdGljcywgcGF5bWVudHMsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBhbmQgbW9yZQ==</PHRASE>
<PHRASE Label="lu_comm_AffilliateMaterialsCode" Module="In-Commerce" Type="0">SGVyZSBpcyB0aGUgSFRNTCBjb2RlIHdoaWNoIGNyZWF0ZXMgYSBsaW5rIHRvIG91ciBzaXRl</PHRASE>
<PHRASE Label="lu_comm_AffilliateMaterialsCopy" Module="In-Commerce" Type="0">WW91IGNvdWxkIGNvcHkgYW5kIHBhc3RlIGl0IG9uIHlvdXIgcGFnZSB0byBjcmVhdGUgYSBsaW5rIGFuZCBzdGFydCByZWZlcmluZyBjdXN0b21lcnMgYW5kIGVhcm5pbmcgYWZmaWxpYXRlIGNvbW1pc3Npb24u</PHRASE>
<PHRASE Label="lu_comm_AffilliateMaterialsToRefer" Module="In-Commerce" Type="0">VG8gcmVmZXIgY3VzdG9tZXJzIHRvIG91ciBzaXRlIGFuZCBlYXJuIGFmZmlsaWF0ZSBjb21taXNzaW9uIHBsZWFzZSB1c2UgdGhlIGZvbGxvd2luZyBVUkw=</PHRASE>
<PHRASE Label="lu_comm_AgreeTermsAndConditions" Module="In-Commerce" Type="0">SSBhZ3JlZSB0byBhZmZpbGlhdGUgYWdyZWVtZW50IHRlcm1zICZhbXA7IGNvbmRpdGlvbnM=</PHRASE>
<PHRASE Label="lu_comm_Amount" Module="In-Commerce" Type="0">QW1vdW50</PHRASE>
<PHRASE Label="lu_comm_AmountWithoutVAT" Module="In-Commerce" Type="0">QW1vdW50IFdpdGhvdXQgU2FsZXMgVGF4L1ZBVA==</PHRASE>
<PHRASE Label="lu_comm_And" Module="In-Commerce" Type="0">QW5k</PHRASE>
<PHRASE Label="lu_comm_Any" Module="In-Commerce" Type="0">QW55</PHRASE>
<PHRASE Label="lu_comm_Availability" Module="In-Commerce" Type="0">QXZhaWxhYmlsaXR5</PHRASE>
<PHRASE Label="lu_comm_BecomeAnAffiliate" Module="In-Commerce" Type="0">QmVjb21lIEFuIEFmZmlsaWF0ZQ==</PHRASE>
<PHRASE Label="lu_comm_BecomeAnAffiliateDescription" Module="In-Commerce" Type="0">UGxlYXNlIGZpbGwgaW4gdGhlIGZvcm0gYmVsb3cgdG8gcmVnaXN0ZXIgYXMgYWZmaWxpYXRlLiBZb3Ugd2lsbCBiZSBub3RpZmllZCB2aWEgZS1tYWlsIHdoZW4geW91ciBhZmZpbGlhdGUgcmVnaXN0cmF0aW9uIGlzIGFwcHJvdmVkLg==</PHRASE>
<PHRASE Label="lu_comm_BillingEmailIfDifferent" Module="In-Commerce" Type="0">QmlsbGluZyBFbWFpbCAoaWYgaXQncyBkaWZmZXJlbnQgZnJvbSBzaGlwcGluZyk=</PHRASE>
<PHRASE Label="lu_comm_BillingInfo" Module="In-Commerce" Type="0">QmlsbGluZyBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_comm_BillingOptions" Module="In-Commerce" Type="0">QmlsbGluZyBPcHRpb25z</PHRASE>
<PHRASE Label="lu_comm_BirthDate" Module="In-Commerce" Type="0">QmlydGggZGF0ZQ==</PHRASE>
<PHRASE Label="lu_comm_Both" Module="In-Commerce" Type="0">Qm90aA==</PHRASE>
<PHRASE Label="lu_comm_BuyNow" Module="In-Commerce" Type="0">QnV5IE5vdw==</PHRASE>
<PHRASE Label="lu_comm_BuyThisProduct" Module="In-Commerce" Type="0">QnV5IFRoaXMgUHJvZHVjdA==</PHRASE>
<PHRASE Label="lu_comm_CardNumber" Module="In-Commerce" Type="0">Q2FyZCBOdW1iZXI=</PHRASE>
<PHRASE Label="lu_comm_CardType" Module="In-Commerce" Type="0">Q2FyZCBUeXBl</PHRASE>
<PHRASE Label="lu_comm_Categories" Module="In-Commerce" Type="0">Q2F0ZWdvcmllcw==</PHRASE>
<PHRASE Label="lu_comm_ChangeAffiliatePaymentType" Module="In-Commerce" Type="0">Q2hhbmdlIFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="lu_comm_ChangeAffiliatePaymentTypeDescription" Module="In-Commerce" Type="0">UGxlYXNlIGNvbXBsZXRlIHRoZSBmb3JtIGJlbG93IHRvIGNoYW5nZSB5b3VyIGFmZmlsaWF0ZSBwYXltZW50IHR5cGUuIFRoZSBjaGFuZ2Ugd2lsbCB0YWtlIGVmZmVjdCBzdGFydGluZyBmcm9tIHRoZSBuZXh0IHNjaGVkdWxlZCBhZmZpbGlhdGUgcGF5bWVudC4=</PHRASE>
<PHRASE Label="lu_comm_ChangeAffiliatePaymentTypeText" Module="In-Commerce" Type="0">QWZmaWxpYXRlIGNvbW1pc3Npb25zIHBheW1lbnQgb3B0aW9ucw==</PHRASE>
<PHRASE Label="lu_comm_ChangePaymentType" Module="In-Commerce" Type="0">Q2hhbmdlIFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="lu_comm_CheckoutSteps" Module="In-Commerce" Type="0">Q2hlY2tvdXQgU3RlcHM=</PHRASE>
<PHRASE Label="lu_comm_ChooseAffiliatePaymentType" Module="In-Commerce" Type="0">Q2hvb3NlIFBheW1lbnQgVHlwZQ==</PHRASE>
<PHRASE Label="lu_comm_ChooseAffiliatePlan" Module="In-Commerce" Type="0">Q2hvb3NlIEFmZmlsaWF0ZSBQbGFu</PHRASE>
<PHRASE Label="lu_comm_City" Module="In-Commerce" Type="0">Q2l0eQ==</PHRASE>
<PHRASE Label="lu_comm_CleanupCart" Module="In-Commerce" Type="0">Q2xlYXIgQ2FydA==</PHRASE>
<PHRASE Label="lu_comm_Clear" Module="In-Commerce" Type="0">Q2xlYXI=</PHRASE>
<PHRASE Label="lu_comm_ClearCartConfirmation" Module="In-Commerce" Type="0">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSBhbGwgcHJvZHVjdHMgZnJvbSB5b3VyIHNob3BwaW5nIGNhcnQ/</PHRASE>
<PHRASE Label="lu_comm_code_expired" Module="In-Commerce" Type="0">Q291cG9uIGNvZGUgaXMgZXhwaXJlZCwgYWxyZWFkeSB1c2VkIG9yIGRpc2FibGVkLg==</PHRASE>
<PHRASE Label="lu_comm_ComissionPayments" Module="In-Commerce" Type="0">Q29taXNzaW9uIFBheW1lbnRz</PHRASE>
<PHRASE Label="lu_comm_Comments" Module="In-Commerce" Type="0">Q29tbWVudHMvaW5zdHJ1Y3Rpb25z</PHRASE>
<PHRASE Label="lu_comm_Company" Module="In-Commerce" Type="0">Q29tcGFueQ==</PHRASE>
<PHRASE Label="lu_comm_Confirmation" Module="In-Commerce" Type="0">Q29uZmlybWF0aW9u</PHRASE>
<PHRASE Label="lu_comm_Contains" Module="In-Commerce" Type="0">Q29udGFpbnM=</PHRASE>
<PHRASE Label="lu_comm_Continue_Shopping" Module="In-Commerce" Type="0">Q29udGludWUgU2hvcHBpbmc=</PHRASE>
<PHRASE Label="lu_comm_CouponApplied" Module="In-Commerce" Type="0">Q291cG9uIGhhcyBiZWVuIGFwcGxpZWQu</PHRASE>
<PHRASE Label="lu_comm_CouponCode" Module="In-Commerce" Type="0">Q291cG9uIENvZGU=</PHRASE>
<PHRASE Label="lu_comm_CouponHasBeenApplied" Module="In-Commerce" Type="0">VGhlIGZvbGxvd2luZyA8aT48c3Ryb25nPmNvdXBvbiBjb2RlPC9zdHJvbmc+PC9pPiBoYXMgYmVlbiBhcHBsaWVk</PHRASE>
<PHRASE Label="lu_comm_CouponIsNotEffective" Module="In-Commerce" Type="0">WW91ciBjb3Vwb24gY29kZSBoYXMgbm90IGJlZW4gYXBwbGllZCBiZWNhdXNlIGl0J3Mgbm90IGVmZmVjdGl2ZSBmb3IgYW55IGl0ZW1zIGluIHlvdXIgY2FydCwgb3IgY3VycmVudCBkaXNjb3VudHMgZ2l2ZXMgeW91IGEgYmV0dGVyIHNhdmluZ3MgYW5kIHlvdSBjb3VsZCBzYXZlIHlvdXIgY291cG9uIGZvciBhbm90aGVyIG9yZGVyLg==</PHRASE>
<PHRASE Label="lu_comm_CouponRemoved" Module="In-Commerce" Type="0">Q291cG9uIGhhcyBiZWVuIHJlbW92ZWQu</PHRASE>
<PHRASE Label="lu_comm_Create" Module="In-Commerce" Type="0">Q3JlYXRl</PHRASE>
<PHRASE Label="lu_comm_CurrentAffiliatePaymentType" Module="In-Commerce" Type="0">Q3VycmVudCBQYXltZW50IFR5cGU=</PHRASE>
<PHRASE Label="lu_comm_cvv2help" Module="In-Commerce" Type="0">Q1ZWMiBoZWxw</PHRASE>
<PHRASE Label="lu_comm_Date" Module="In-Commerce" Type="0">RGF0ZQ==</PHRASE>
<PHRASE Label="lu_comm_DeleteAddress" Module="In-Commerce" Type="0">QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFkZHJlc3M/</PHRASE>
<PHRASE Label="lu_comm_Description" Module="In-Commerce" Type="0">RGVzY3JpcHRpb24=</PHRASE>
<PHRASE Label="lu_comm_DescriptionHeader" Module="In-Commerce" Type="0">REVTQ1JJUFRJT04=</PHRASE>
<PHRASE Label="lu_comm_Details" Module="In-Commerce" Type="0">RGV0YWlscw==</PHRASE>
<PHRASE Label="lu_comm_Discount" Module="In-Commerce" Type="0">RGlzY291bnQ=</PHRASE>
<PHRASE Label="lu_comm_DiscountInfo" Module="In-Commerce" Type="0">RGlzY291bnQgSW5mbw==</PHRASE>
<PHRASE Label="lu_comm_DoesntContain" Module="In-Commerce" Type="0">RG9lc24ndCBDb250YWlu</PHRASE>
<PHRASE Label="lu_comm_DontHaveAddresses" Module="In-Commerce" Type="0">WW91IGhhdmUgbm90IGNyZWF0ZWQgYW55IGFkZHJlc3NlcyB5ZXQu</PHRASE>
<PHRASE Label="lu_comm_DontHaveOrders" Module="In-Commerce" Type="0">WW91IGRvbid0IGhhdmUgYW55IG9yZGVycyB5ZXQ=</PHRASE>
<PHRASE Label="lu_comm_DontHavePayments" Module="In-Commerce" Type="0">WW91IGRvbid0IGhhdmUgYW55IGFmZmlsYXRlIHBheW1lbnRzIHlldC4=</PHRASE>
<PHRASE Label="lu_comm_DontHaveVisitors" Module="In-Commerce" Type="0">WW91IGRvbid0IGhhdmUgYW55IHZpc2l0b3JzIHlldA==</PHRASE>
<PHRASE Label="lu_comm_DownloadLink" Module="In-Commerce" Type="0">TGluaw==</PHRASE>
<PHRASE Label="lu_comm_DownloadNow" Module="In-Commerce" Type="0">RG93bmxvYWQgTm93</PHRASE>
<PHRASE Label="lu_comm_Downloads" Module="In-Commerce" Type="0">RG93bmxvYWRz</PHRASE>
<PHRASE Label="lu_comm_DownloadsText" Module="In-Commerce" Type="0">VGhlIGl0ZW1zIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQ=</PHRASE>
<PHRASE Label="lu_comm_EditorsPick" Module="In-Commerce" Type="0">RWRpdG9yJ3MgUGljaw==</PHRASE>
<PHRASE Label="lu_comm_EditorsPicks" Module="In-Commerce" Type="0">RWRpdG9yJ3MgUGlja3M=</PHRASE>
<PHRASE Label="lu_comm_edit_options" Module="In-Commerce" Type="0">RWRpdCBPcHRpb25z</PHRASE>
<PHRASE Label="lu_comm_EnterCouponCode" Module="In-Commerce" Type="0">SWYgeW91IGhhdmUgPGk+PHN0cm9uZz5jb3Vwb24gY29kZTwvc3Ryb25nPjwvaT4sIGVudGVyIGl0IGhlcmU=</PHRASE>
<PHRASE Label="lu_comm_EnterGiftCertificateCode" Module="In-Commerce" Type="0">SWYgeW91IGhhdmUgPGk+PHN0cm9uZz5naWZ0IGNlcnRpZmljYXRlPC9zdHJvbmc+PC9pPiwgZW50ZXIgaXQgaGVyZQ==</PHRASE>
<PHRASE Label="lu_comm_EnterShippingAddress" Module="In-Commerce" Type="0">UGxlYXNlIGVudGVyIHlvdXIgc2hpcHBpbmcgYWRkcmVzcy4gSW5jb21wbGV0ZSBvciBpbmNvcmVjdCBpbmZvcm1hdGlvbiBtYXkgcmVzdWx0IGluIGEgZGVsYXkgb3IgY2FuY2VsbGF0aW9uIG9mIHlvdXIgb3JkZXIu</PHRASE>
<PHRASE Label="lu_comm_ErrorAlreadyReviewed" Module="In-Commerce" Type="0">WW91IGhhdmUgYWxyZWFkeSByZXZpZXdlZCB0aGlzIHByb2R1Y3QhICBZb3VyIGFwcHJvdmVkIHJldmlld3MgYXJlIGxpc3RlZCBiZWxvdy4=</PHRASE>
<PHRASE Label="lu_comm_ErrorInvalidShippingAddress" Module="In-Commerce" Type="0">UGxlYXNlIGVudGVyIHZhbGlkIHNoaXBwaW5nIGFkZHJlc3MgdG8gZ2V0IHNoaXBwaW5nIHJhdGVzIGFuZCBvcHRpb25z</PHRASE>
<PHRASE Label="lu_comm_ErrorNoShippingTypes" Module="In-Commerce" Type="0">U29ycnksIGJ1dCBubyBzaGlwcGluZyB0eXBlcyBhcmUgYXZhaWxhYmxlIGZvciBzZWxlY3RlZCBhZGRyZXNzLiBQbGVhc2Ugc2VsZWN0IGRpZmZlcmVudCBhZGRyZXNzLCBvciBjb250YWN0IHNpdGUgYWRtaW5pc3RyYXRvcg==</PHRASE>
<PHRASE Label="lu_comm_ExactlyIs" Module="In-Commerce" Type="0">RXhhY3RseSBJcw==</PHRASE>
<PHRASE Label="lu_comm_Exp" Module="In-Commerce" Type="0">RXhwLg==</PHRASE>
<PHRASE Label="lu_comm_FaxNumber" Module="In-Commerce" Type="0">RmF4IE51bWJlcg==</PHRASE>
<PHRASE Label="lu_comm_Featured" Module="In-Commerce" Type="0">RmVhdHVyZWQgSXRlbQ==</PHRASE>
<PHRASE Label="lu_comm_FeaturedProducts" Module="In-Commerce" Type="0">RmVhdHVyZWQgUHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_comm_Features" Module="In-Commerce" Type="0">RmVhdHVyZXM=</PHRASE>
<PHRASE Label="lu_comm_FieldIsRequired" Module="In-Commerce" Type="0">RmllbGQgaXMgcmVxdWlyZWQ=</PHRASE>
<PHRASE Label="lu_comm_FileName" Module="In-Commerce" Type="0">RmlsZW5hbWU=</PHRASE>
<PHRASE Label="lu_comm_Files" Module="In-Commerce" Type="0">RmlsZXM=</PHRASE>
<PHRASE Label="lu_comm_FirstName" Module="In-Commerce" Type="0">Rmlyc3QgbmFtZQ==</PHRASE>
<PHRASE Label="lu_comm_FreeShipping" Module="In-Commerce" Type="0">RnJlZQ==</PHRASE>
<PHRASE Label="lu_comm_FriendEmail" Module="In-Commerce" Type="0">WW91ciBmcmllbmQgZS1tYWls</PHRASE>
<PHRASE Label="lu_comm_FriendName" Module="In-Commerce" Type="0">WW91ciBmcmllbmQgbmFtZQ==</PHRASE>
<PHRASE Label="lu_comm_From" Module="In-Commerce" Type="0">RnJvbQ==</PHRASE>
<PHRASE Label="lu_comm_FullName" Module="In-Commerce" Type="0">RnVsbCBOYW1l</PHRASE>
<PHRASE Label="lu_comm_GiftCertificateApplied" Module="In-Commerce" Type="0">R2lmdCBDZXJ0aWZpY2F0ZSBoYXMgYmVlbiBhcHBsaWVk</PHRASE>
<PHRASE Label="LU_COMM_GIFTCERTIFICATEHASBEENAPPLIED" Module="In-Commerce" Type="0">VGhlIGZvbGxvd2luZyA8aT48c3Ryb25nPmdpZnQgY2VydGlmaWNhdGU8L3N0cm9uZz48L2k+IGhhcyBiZWVuIGFwcGxpZWQ=</PHRASE>
<PHRASE Label="lu_comm_GiftCertificateIsNotEffective" Module="In-Commerce" Type="0">WW91ciBnaWZ0IGNlcnRpZmljYXRlIGhhcyBub3QgYmVlbiBhcHBsaWVkIGJlY2F1c2UgaXQncyBub3QgZWZmZWN0aXZlIGZvciBhbnkgaXRlbXMgaW4geW91ciBjYXJ0LCBvciBjdXJyZW50IGRpc2NvdW50cyBnaXZlcyB5b3UgYSBiZXR0ZXIgc2F2aW5ncyBhbmQgeW91IGNvdWxkIHNhdmUgeW91ciBnaWZ0IGNlcnRpZmljYXRlIGZvciBhbm90aGVyIG9yZGVyLg==</PHRASE>
<PHRASE Label="lu_comm_GiftCertificateRemoved" Module="In-Commerce" Type="0">R2lmdCBDZXJ0aWZpY2F0ZSBoYXMgYmVlbiByZW1vdmVkLg==</PHRASE>
<PHRASE Label="lu_comm_Gift_Certificate" Module="In-Commerce" Type="0">R2lmdCBDZXJ0aWZpY2F0ZQ==</PHRASE>
<PHRASE Label="lu_comm_GrandTotal" Module="In-Commerce" Type="0">R3JhbmQgVG90YWw=</PHRASE>
<PHRASE Label="lu_comm_Hits" Module="In-Commerce" Type="0">UXR5IFNvbGQ=</PHRASE>
<PHRASE Label="lu_comm_IAgreeTo" Module="In-Commerce" Type="0">SSBBZ3JlZSB0bw==</PHRASE>
<PHRASE Label="lu_comm_Images" Module="In-Commerce" Type="0">QWRkaXRpb25hbCBJbWFnZXM=</PHRASE>
<PHRASE Label="lu_comm_ImagesHeader" Module="In-Commerce" Type="0">QURESVRJT05BTCBJTUFHRVM=</PHRASE>
<PHRASE Label="lu_comm_insurance_fee" Module="In-Commerce" Type="0">SW5zdXJhbmNlIENvc3Q=</PHRASE>
<PHRASE Label="lu_comm_invalid_code" Module="In-Commerce" Type="0">SW52YWxpZCBjb3Vwb24gY29kZSE=</PHRASE>
<PHRASE Label="lu_comm_IsNot" Module="In-Commerce" Type="0">SXMgbm90</PHRASE>
<PHRASE Label="lu_comm_ItemIsEligibleForDiscount" Module="In-Commerce" Type="0">VGhpcyBpdGVtIGlzIGVsaWdpYmxlIGZvciB0aGUgZm9sbG93aW5nIGRpc2NvdW50</PHRASE>
<PHRASE Label="lu_comm_Items" Module="In-Commerce" Type="0">SXRlbXM=</PHRASE>
<PHRASE Label="lu_comm_KeywordsTooShort" Module="In-Commerce" Type="0">S2V5d29yZHMgYXJlIHRvbyBzaG9ydA==</PHRASE>
<PHRASE Label="lu_comm_Last3Months" Module="In-Commerce" Type="0">TGFzdCAzIG1vbnRocw==</PHRASE>
<PHRASE Label="lu_comm_Last6Months" Module="In-Commerce" Type="0">TGFzdCA2IG1vbnRocw==</PHRASE>
<PHRASE Label="lu_comm_LastMonth" Module="In-Commerce" Type="0">TGFzdCBtb250aA==</PHRASE>
<PHRASE Label="lu_comm_LastName" Module="In-Commerce" Type="0">TGFzdCBuYW1l</PHRASE>
<PHRASE Label="lu_comm_LastQuater" Module="In-Commerce" Type="1">TGFzdCBRdWF0ZXI=</PHRASE>
<PHRASE Label="lu_comm_Lastweek" Module="In-Commerce" Type="0">TGFzdCB3ZWVr</PHRASE>
<PHRASE Label="lu_comm_LastYear" Module="In-Commerce" Type="0">TGFzdCB5ZWFy</PHRASE>
<PHRASE Label="lu_comm_Login" Module="In-Commerce" Type="0">TG9naW4=</PHRASE>
<PHRASE Label="lu_comm_Logout" Module="In-Commerce" Type="0">TG9nb3V0</PHRASE>
<PHRASE Label="lu_comm_ManageAddresses" Module="In-Commerce" Type="0">TWFuYWdlIGFkZHJlc3Nlcw==</PHRASE>
<PHRASE Label="lu_comm_Manufacturer" Module="In-Commerce" Type="0">TWFudWZhY3R1cmVy</PHRASE>
<PHRASE Label="lu_comm_Manufacturers" Module="In-Commerce" Type="0">TWFudWZhY3R1cmVycw==</PHRASE>
<PHRASE Label="lu_comm_ManufAZ" Module="In-Commerce" Type="0">TWFudWZhY3R1cmVyIEEgdG8gWg==</PHRASE>
<PHRASE Label="lu_comm_ManufZA" Module="In-Commerce" Type="0">TWFudWZhY3R1cmVyIFogdG8gQQ==</PHRASE>
<PHRASE Label="lu_comm_Message" Module="In-Commerce" Type="0">TWVzc2FnZQ==</PHRASE>
<PHRASE Label="lu_comm_MoreFiles" Module="In-Commerce" Type="0">TW9yZSBGaWxlcw==</PHRASE>
<PHRASE Label="lu_comm_MoreImages" Module="In-Commerce" Type="0">TW9yZSBJbWFnZXM=</PHRASE>
<PHRASE Label="lu_comm_MoreLink" Module="In-Commerce" Type="0">bW9yZQ==</PHRASE>
<PHRASE Label="lu_comm_MoreOrders" Module="In-Commerce" Type="0">bW9yZSBvcmRlcnM=</PHRASE>
<PHRASE Label="lu_comm_msg_outofstock" Module="In-Commerce" Type="0">U29ycnksIGJ1dCB0aGUgcHJvZHVjdCB5b3UgaGF2ZSBzZWxlY3RlZCBpcyBvdXQgb2Ygc3RvY2su</PHRASE>
<PHRASE Label="lu_comm_msg_qty_unavailable" Module="In-Commerce" Type="0">U29ycnksIGJ1dCB0aGUgcXVhbnRpdHkgeW91IGhhdmUgc2VsZWN0ZWQgZm9yIG9uZSBvciBtb3JlIHByb2R1Y3RzIGluIHlvdXIgY2FydCBpcyBub3QgY3VycmVudGx5IGF2YWlsYmxlLiBNYXhpbXVtIGF2YWlsYmxlIHF1YW50aXR5IGhhcyBiZWVuIGxlZnQgaW4geW91ciBjYXJ0Lg==</PHRASE>
<PHRASE Label="lu_comm_Msg_State_Changed" Module="In-Commerce" Type="0">SXRlbXMgcXVhbnRpdGVzIGFuZC9vciBvcmRlciB0eXBlcyBpbiB5b3UgY2FydCBoYXZlIGJlZW4gdXBkYXRlZC4gUGxlYXNlIHJldmlldyB0aGUgY2hhbmdlcyBiZWxvdyBiZWZvcmUgcHJvY2VlZGluZy4=</PHRASE>
<PHRASE Label="lu_comm_MSRP" Module="In-Commerce" Type="0">TVNSUA==</PHRASE>
<PHRASE Label="lu_comm_MustAgreeAffiliateTermsError" Module="In-Commerce" Type="0">WW91IGhhdmUgdG8gYWdyZWUgdG8gYWZmaWxpYXRlIHRlcm1zICZhbXA7IGNvbmRpdGlvbnMgdG8gcmVnaXN0ZXIgYXMgYWZmaWxpYXRl</PHRASE>
<PHRASE Label="lu_comm_MyAccount" Module="In-Commerce" Type="0">TXkgQWNjb3VudA==</PHRASE>
<PHRASE Label="lu_comm_MyAddresses" Module="In-Commerce" Type="0">TXkgQWRkcmVzc2Vz</PHRASE>
<PHRASE Label="lu_comm_MyOrders" Module="In-Commerce" Type="0">TXkgT3JkZXJz</PHRASE>
<PHRASE Label="lu_comm_Name" Module="In-Commerce" Type="0">TmFtZQ==</PHRASE>
<PHRASE Label="lu_comm_NameAZ" Module="In-Commerce" Type="0">VGl0bGUgQSB0byBa</PHRASE>
<PHRASE Label="lu_comm_NameOnCard" Module="In-Commerce" Type="0">TmFtZSBvbiB0aGUgQ2FyZA==</PHRASE>
<PHRASE Label="lu_comm_NameZA" Module="In-Commerce" Type="0">VGl0bGUgWiB0byBB</PHRASE>
<PHRASE Label="lu_comm_New" Module="In-Commerce" Type="0">TmV3</PHRASE>
<PHRASE Label="lu_Comm_NewAddress" Module="In-Commerce" Type="0">QWRkIG5ldyBhZGRyZXNz</PHRASE>
<PHRASE Label="lu_comm_NewProducts" Module="In-Commerce" Type="0">TmV3IFByb2R1Y3Rz</PHRASE>
<PHRASE Label="lu_comm_No" Module="In-Commerce" Type="0">Tm8=</PHRASE>
<PHRASE Label="lu_comm_NoCriteriaEntered" Module="In-Commerce" Type="0">Tm8gY3JpdGVyaWEgZW50ZXJlZCBvciBrZXl3b3JkcyBhcmUgdG9vIHNob3J0IQ==</PHRASE>
<PHRASE Label="lu_comm_NoFavorites" Module="In-Commerce" Type="0">WW91IGhhdmUgbm8gZmF2b3JpdGVzIHByb2R1Y3Rz</PHRASE>
<PHRASE Label="lu_comm_NoFilesForThisProduct" Module="In-Commerce" Type="0">VGhlcmUgaXMgbm8gZmlsZXMgYXZhaWxhYmxlIGZvciB0aGlzIHByb2R1Y3Qu</PHRASE>
<PHRASE Label="lu_comm_NoProductsFound" Module="In-Commerce" Type="0">Tm8gcHJvZHVjdHMgZm91bmQgbWF0Y2hpbmcgeW91ciBjcml0ZXJpYQ==</PHRASE>
<PHRASE Label="lu_comm_Note" Module="In-Commerce" Type="0">Tm90ZQ==</PHRASE>
<PHRASE Label="lu_comm_Ok" Module="In-Commerce" Type="0">T2s=</PHRASE>
<PHRASE Label="lu_comm_OldToRecent" Module="In-Commerce" Type="0">T2xkIHRvIFJlY2VudA==</PHRASE>
<PHRASE Label="lu_comm_OptionsCombination" Module="In-Commerce" Type="0">T3B0aW9ucyBDb21iaW5hdGlvbg==</PHRASE>
<PHRASE Label="lu_comm_OptionsNotAvailable" Module="In-Commerce" Type="0">U2VsZWN0ZWQgb3B0aW9ucyBjb21iaW5hdGlvbiBpcyBjdXJyZW50bHkgbm90IGF2YWlsYWJsZQ==</PHRASE>
<PHRASE Label="lu_comm_OptionsRequired" Module="In-Commerce" Type="0">UGxlYXNlIHNlbGVjdCB0aGUgb3B0aW9ucyBtYXJrZWQgd2l0aCA8c3BhbiBjbGFzcz0iZXJyb3IiPio8L3NwYW4+IGJlZm9yZSBwcm9jZWVkaW5n</PHRASE>
<PHRASE Label="lu_comm_Or" Module="In-Commerce" Type="0">T3I=</PHRASE>
<PHRASE Label="lu_comm_OrderCommissionEarned" Module="In-Commerce" Type="0">Q29tbWlzc2lvbg==</PHRASE>
<PHRASE Label="lu_comm_OrderCompleted" Module="In-Commerce" Type="0">T3JkZXIgQ29tcGxldGVk</PHRASE>
<PHRASE Label="lu_comm_OrderCount" Module="In-Commerce" Type="0">T3JkZXIgY291bnQ=</PHRASE>
<PHRASE Label="lu_comm_OrderNumber" Module="In-Commerce" Type="0">T3JkZXIgIw==</PHRASE>
<PHRASE Label="lu_comm_OrderNumberText" Module="In-Commerce" Type="0">T3JkZXIgTnVtYmVy</PHRASE>
<PHRASE Label="lu_comm_OrderPreview" Module="In-Commerce" Type="0">T3JkZXIgUHJldmlldw==</PHRASE>
<PHRASE Label="lu_comm_Orders" Module="In-Commerce" Type="0">T3JkZXJz</PHRASE>
<PHRASE Label="lu_comm_OrdersText" Module="In-Commerce" Type="0">QWxsIG9mIHlvdXIgb3JkZXJz</PHRASE>
<PHRASE Label="lu_comm_OrderSuccessfullyPlaced" Module="In-Commerce" Type="0">WW91ciBvcmRlciBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcGxhY2Vk</PHRASE>
<PHRASE Label="lu_comm_OrderText" Module="In-Commerce" Type="0">T3JkZXIgbnVtYmVy</PHRASE>
<PHRASE Label="lu_comm_OrderTotal" Module="In-Commerce" Type="0">T3JkZXIgVG90YWw=</PHRASE>
<PHRASE Label="lu_comm_OrderTotalAmount" Module="In-Commerce" Type="0">T3JkZXIgQW1vdW50</PHRASE>
<PHRASE Label="lu_comm_OrEnterAddress" Module="In-Commerce" Type="0">b3IgZW50ZXIgbmV3IGFkZHJlc3MgYmVsb3c=</PHRASE>
<PHRASE Label="lu_comm_OrEnterNewAddress" Module="In-Commerce" Type="0">b3IgZW50ZXIgbmV3IGFkZHJlc3MgYmVsb3c6</PHRASE>
<PHRASE Label="lu_comm_OtherProducts" Module="In-Commerce" Type="0">cHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_comm_OtherProductsBy" Module="In-Commerce" Type="0">b3RoZXI=</PHRASE>
<PHRASE Label="lu_comm_OurPrice" Module="In-Commerce" Type="0">T3VyIFByaWNl</PHRASE>
<PHRASE Label="lu_comm_outofstock" Module="In-Commerce" Type="0">T3V0IG9mIHN0b2Nr</PHRASE>
<PHRASE Label="lu_comm_PaymentAmount" Module="In-Commerce" Type="0">QW1vdW50</PHRASE>
<PHRASE Label="lu_comm_PaymentReference" Module="In-Commerce" Type="0">UGF5bWVudCBSZWZlcmVuY2U=</PHRASE>
<PHRASE Label="lu_comm_PaymentType" Module="In-Commerce" Type="0">UGF5bWVudCBUeXBl</PHRASE>
<PHRASE Label="lu_comm_PersonalInfo" Module="In-Commerce" Type="0">UGVyc29uYWwgSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="lu_comm_PersonalInfoText" Module="In-Commerce" Type="0">VGhpcyBzZWN0aW9uIGFsbG93cyB5b3UgdG8gY2hhbmdlIHlvdXIgcGVyc29uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyBOYW1lLCBQYXNzd29yZCBldGMu</PHRASE>
<PHRASE Label="lu_comm_PhoneNumber" Module="In-Commerce" Type="0">UGhvbmUgTnVtYmVy</PHRASE>
<PHRASE Label="lu_comm_PleaseEnterBillingAddress" Module="In-Commerce" Type="0">UGxlYXNlIGVudGVyIHlvdXIgYmlsbGluZyBhZGRyZXNzLiBJbmNvbXBsZXRlIG9yIGluY29yZWN0IGluZm9ybWF0aW9uIG1heSByZXN1bHQgaW4gYSBkZWxheSBvciBjYW5jZWxsYXRpb24gb2YgeW91ciBvcmRlci4=</PHRASE>
<PHRASE Label="lu_comm_PleaseEnterFollowingData" Module="In-Commerce" Type="0">UGxlYXNlIGVudGVyIHRoZSBmb2xsb3dpbmcgZGF0YQ==</PHRASE>
<PHRASE Label="lu_comm_PleaseRegisterAfter" Module="In-Commerce" Type="0">UGxlYXNlIHJlZ2lzdGVyLiBBZnRlciByZWdpc3RlcmluZyB5b3Ugd2lsbCBiZSBhYmxlLi4u</PHRASE>
<PHRASE Label="lu_comm_Pop" Module="In-Commerce" Type="0">UG9wdWxhcg==</PHRASE>
<PHRASE Label="lu_comm_Price" Module="In-Commerce" Type="0">UHJpY2U=</PHRASE>
<PHRASE Label="lu_comm_PriceHL" Module="In-Commerce" Type="0">UHJpY2UgSGlnaCB0byBMb3c=</PHRASE>
<PHRASE Label="lu_comm_PriceLH" Module="In-Commerce" Type="0">UHJpY2UgTG93IHRvIEhpZ2g=</PHRASE>
<PHRASE Label="lu_comm_Pricing" Module="In-Commerce" Type="0">UHJpY2luZw==</PHRASE>
<PHRASE Label="lu_comm_ProblemWithAddress" Module="In-Commerce" Type="0">VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggeW91ciBhZGRyZXNzIHN1Ym1pc3Npb24uIFBsZWFzZSBmaWxsIGluIGFsbCByZXF1aXJlZCBhZGRyZXNzIGZpZWxkcy4=</PHRASE>
<PHRASE Label="lu_comm_ProceedCheckout" Module="In-Commerce" Type="0">UHJvY2VlZCB0byBDaGVja291dA==</PHRASE>
<PHRASE Label="lu_comm_ProceedToBilling" Module="In-Commerce" Type="0">UHJvY2VlZCB0byBCaWxsaW5n</PHRASE>
<PHRASE Label="lu_comm_ProcessingFee" Module="In-Commerce" Type="0">UHJvY2Vzc2luZyBGZWU=</PHRASE>
<PHRASE Label="lu_comm_ProductDetails" Module="In-Commerce" Type="0">UHJvZHVjdCBEZXRhaWxz</PHRASE>
<PHRASE Label="lu_comm_ProductFiles" Module="In-Commerce" Type="0">RmlsZXM=</PHRASE>
<PHRASE Label="lu_comm_Products" Module="In-Commerce" Type="0">UHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_comm_ProductsBy" Module="In-Commerce" Type="0">UHJvZHVjdHMgQnk=</PHRASE>
<PHRASE Label="lu_comm_ProductsTotal" Module="In-Commerce" Type="0">UHJvZHVjdHMgVG90YWw=</PHRASE>
<PHRASE Label="lu_comm_ProfileAddressWarning" Module="In-Commerce" Type="1">VGhpcyBpcyB5b3VyIHByb2ZpbGUgYWRkcmVzcy4gSXQgd2lsbCBiZSB1cGRhdGVkIGlmIHlvdSBlZGl0IHRoZSBhZGRyZXNzIGJlbG93Lg==</PHRASE>
<PHRASE Label="lu_comm_Qty" Module="In-Commerce" Type="0">UXR5</PHRASE>
<PHRASE Label="lu_comm_Quantity" Module="In-Commerce" Type="0">UXVhbnRpdHk=</PHRASE>
<PHRASE Label="lu_comm_QuantityPricing" Module="In-Commerce" Type="0">UXVhbnRpdHkgUHJpY2luZw==</PHRASE>
<PHRASE Label="lu_comm_QuantityPricingHeader" Module="In-Commerce" Type="0">UVVBTlRJVFkgUFJJQ0lORw==</PHRASE>
<PHRASE Label="lu_comm_RateAverage" Module="In-Commerce" Type="0">QXZlcmFnZQ==</PHRASE>
<PHRASE Label="lu_comm_RateExcellent" Module="In-Commerce" Type="0">RXhjZWxsZW50</PHRASE>
<PHRASE Label="lu_comm_RateFair" Module="In-Commerce" Type="0">RmFpcg==</PHRASE>
<PHRASE Label="lu_comm_RateGood" Module="In-Commerce" Type="0">R29vZA==</PHRASE>
<PHRASE Label="lu_comm_RatePoor" Module="In-Commerce" Type="0">UG9vcg==</PHRASE>
<PHRASE Label="lu_comm_RateProduct" Module="In-Commerce" Type="0">UmF0ZSBQcm9kdWN0</PHRASE>
<PHRASE Label="lu_comm_RateThisProduct" Module="In-Commerce" Type="0">UmF0ZSBUaGlzIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_comm_RateVeryGood" Module="In-Commerce" Type="0">VmVyeSBHb29k</PHRASE>
<PHRASE Label="lu_comm_RecentlyViewed" Module="In-Commerce" Type="0">UmVjZW50bHkgVmlld2VkIEl0ZW1z</PHRASE>
<PHRASE Label="lu_comm_RecentOrders" Module="In-Commerce" Type="0">UmVjZW50IE9yZGVycw==</PHRASE>
<PHRASE Label="lu_comm_RecentToOld" Module="In-Commerce" Type="0">UmVjZW50IHRvIE9sZA==</PHRASE>
<PHRASE Label="lu_comm_Recommend" Module="In-Commerce" Type="0">UmVjb21tZW5k</PHRASE>
<PHRASE Label="lu_comm_RecommendProductToAFriend" Module="In-Commerce" Type="0">UmVjb21tZW5kIHRoaXMgcHJvZHVjdCB0byBhIGZyaWVuZA==</PHRASE>
<PHRASE Label="lu_comm_RecommendThisProduct" Module="In-Commerce" Type="0">UmVjb21tZW5kIFRoaXMgUHJvZHVjdA==</PHRASE>
<PHRASE Label="lu_comm_Referer" Module="In-Commerce" Type="0">UmVmZXJlciBVUkw=</PHRASE>
<PHRASE Label="lu_comm_RegisterAsAffiliate" Module="In-Commerce" Type="0">UmVnaXN0ZXIgQXMgQWZmaWxpYXRl</PHRASE>
<PHRASE Label="lu_comm_Registration" Module="In-Commerce" Type="0">UmVnaXN0cmF0aW9u</PHRASE>
<PHRASE Label="lu_comm_RegularPrice" Module="In-Commerce" Type="0">UmVndWxhciBQcmljZQ==</PHRASE>
<PHRASE Label="lu_comm_RelatedProducts" Module="In-Commerce" Type="0">UmVsYXRlZCBQcm9kdWN0cw==</PHRASE>
<PHRASE Label="lu_comm_Relevance" Module="In-Commerce" Type="0">UmVsZXZhbmNl</PHRASE>
<PHRASE Label="lu_comm_RemoveCoupon" Module="In-Commerce" Type="0">UmVtb3Zl</PHRASE>
<PHRASE Label="lu_comm_RemoveFromFav" Module="In-Commerce" Type="0">UmVtb3ZlIGZyb20gV2lzaCBMaXN0</PHRASE>
<PHRASE Label="lu_comm_RemoveGiftCertificate" Module="In-Commerce" Type="0">UmVtb3Zl</PHRASE>
<PHRASE Label="lu_comm_ReviewBy" Module="In-Commerce" Type="0">UmV2aWV3IEJ5</PHRASE>
<PHRASE Label="lu_comm_ReviewProduct" Module="In-Commerce" Type="0">UmV2aWV3IHByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_comm_Reviews" Module="In-Commerce" Type="0">UmV2aWV3cw==</PHRASE>
<PHRASE Label="lu_comm_ReviewsHeader" Module="In-Commerce" Type="0">UkVWSUVXUw==</PHRASE>
<PHRASE Label="lu_comm_ReviewThisProduct" Module="In-Commerce" Type="0">UmV2aWV3IHRoaXMgcHJvZHVjdA==</PHRASE>
<PHRASE Label="lu_comm_SearchInResults" Module="In-Commerce" Type="0">U2VhcmNoIEluIFJlc3VsdHM=</PHRASE>
<PHRASE Label="lu_comm_SearchResults" Module="In-Commerce" Type="0">U2VhcmNoIFJlc3VsdHM=</PHRASE>
<PHRASE Label="lu_comm_SeeDetails" Module="In-Commerce" Type="0">U2VlIGRldGFpbHM=</PHRASE>
<PHRASE Label="lu_comm_Select" Module="In-Commerce" Type="0">U2VsZWN0</PHRASE>
<PHRASE Label="lu_comm_SelectAddress" Module="In-Commerce" Type="0">UGxlYXNlIHNlbGVjdCB5b3VyIGFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_comm_SelectOptions" Module="In-Commerce" Type="0">U2VsZWN0IE9wdGlvbnM=</PHRASE>
<PHRASE Label="lu_comm_SendPassword" Module="In-Commerce" Type="0">U2VuZCBwYXNzd29yZA==</PHRASE>
<PHRASE Label="lu_comm_ShipmentInfo" Module="In-Commerce" Type="0">U2hpcG1lbnQgaW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="lu_comm_Shipping" Module="In-Commerce" Type="0">U2hpcHBpbmc=</PHRASE>
<PHRASE Label="lu_comm_ShippingCost" Module="In-Commerce" Type="0">U2hpcHBpbmcgY29zdA==</PHRASE>
<PHRASE Label="lu_comm_ShippingInfo" Module="In-Commerce" Type="0">U2hpcHBpbmcgSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="lu_comm_ShippingOptions" Module="In-Commerce" Type="0">U2hpcHBpbmcgT3B0aW9ucw==</PHRASE>
<PHRASE Label="lu_comm_ShippingTotal" Module="In-Commerce" Type="0">U2hpcHBpbmcgVG90YWw=</PHRASE>
<PHRASE Label="lu_comm_ShippingTracking" Module="In-Commerce" Type="0">VHJhY2tpbmcvUmVmZXJlbmNlIE51bWJlcg==</PHRASE>
<PHRASE Label="lu_comm_ShippingTypesLimitationApply" Module="In-Commerce" Type="0">VGhlIHByb2R1Y3RzIGluIHlvdXIgY2FydCBoYXZlIGRpZmZlcmVudCBzaGlwcGluZyBvcHRpb25zLiBUaGUgc2hpcHBpbmcgb3B0aW9ucyBhbGxvd2VkIGZvciBhbGwgdGhlIHByb2R1Y3RzIGluIHlvdXIgY2FydCBhcmUgZGlzcGxheWVkIGJlbG93LiBJZiB5b3UnZCBsaWtlIHRvIG1hbnVhbGx5IGFkanVzdCB0aGUgc2hpcHBpbmcgZm9yIGV2ZXJ5IGdyb3VwIG9mIHByb2R1Y3RzIGNsaWNrIHRoZSBjaGVja2JveCBiZWxvdw==</PHRASE>
<PHRASE Label="lu_comm_ShippingTypesLimitationApply_CantSingleShip" Module="In-Commerce" Type="0">dGhlIHByb2R1Y3RzIGluIHlvdXIgc2hvcHBpbmcgY2FydCBjYW4ndCBiZSBzaGlwcGVkIGluIG9uZSBzaGlwbWVudCBiZWNhdXNlIG9mIGRpZmZlcmVudCBzaGlwcGluZyBvcHRpb25zLiBZb3VyIG9yZGVyIHdpbGwgYmUgc3BsaXQgYW5kIHNvbWUgcHJvZHVjdHMgd2lsbCBiZSBzaGlwcGVkIHNlcGFyYXRlbHkuIFBsZWFzZSBzZWxlY3QgdGhlIHNoaXBwaW5nIGZvciBlYWNoIGdyb3VwIG9mIHByb2R1Y3RzIGJlbG93Lg==</PHRASE>
<PHRASE Label="lu_comm_ShipsForFree" Module="In-Commerce" Type="0">KHdoZW4gcHVyY2hhc2VkIHdpdGggc2VydmljZSBwbGFuKSBhbmQgdGhpcyBpdGVtIHNoaXBzIGZvciBGUkVFIHdpdGggU3VwZXIgU2F2ZXI=</PHRASE>
<PHRASE Label="lu_comm_Size" Module="In-Commerce" Type="0">U2l6ZQ==</PHRASE>
<PHRASE Label="lu_comm_Sort" Module="In-Commerce" Type="0">U29ydA==</PHRASE>
<PHRASE Label="lu_comm_SortBy" Module="In-Commerce" Type="0">U29ydCBieQ==</PHRASE>
<PHRASE Label="lu_comm_SSNField" Module="In-Commerce" Type="0">U1NOL1RheCBJZC9WQVQgTnVtYmVy</PHRASE>
<PHRASE Label="lu_comm_Status" Module="In-Commerce" Type="0">U3RhdHVz</PHRASE>
<PHRASE Label="lu_comm_SubCategories" Module="In-Commerce" Type="0">U3ViLUNhdGVnb3JpZXM=</PHRASE>
<PHRASE Label="lu_comm_Subscribe" Module="In-Commerce" Type="0">U3Vic2NyaWJl</PHRASE>
<PHRASE Label="lu_comm_Subtotal" Module="In-Commerce" Type="0">U3VidG90YWw=</PHRASE>
<PHRASE Label="lu_comm_TermsAndConditions" Module="In-Commerce" Type="0">dGVybXMgJmFtcDsgY29uZGl0aW9ucw==</PHRASE>
<PHRASE Label="lu_comm_TermsAndConditionsLink" Module="In-Commerce" Type="0">VGVybXMgQW5kIENvbmRpdGlvbnM=</PHRASE>
<PHRASE Label="lu_comm_TermsAndConditionsText" Module="In-Commerce" Type="0">QWZmaWxpYXRlIGFncmVlbWVudCwgdGVybXMgJmFtcDsgY29uZGl0aW9ucw==</PHRASE>
<PHRASE Label="lu_comm_ThankYou" Module="In-Commerce" Type="0">VGhhbmsgWW91</PHRASE>
<PHRASE Label="lu_comm_ThankYouForBecomingAffiliate" Module="In-Commerce" Type="0">VGhhbmsgeW91IGZvciByZWdpc3RlcmluZyBhcyBhZmZpbGlhdGUuIFlvdSB3aWxsIGJlIG5vdGlmaWVkIHZpYSBlLW1haWwgd2hlbiB5b3VyIHJlZ2lzdHJhdGlvbiBpcyBhcHByb3ZlZC4=</PHRASE>
<PHRASE Label="lu_comm_To" Module="In-Commerce" Type="0">VG8=</PHRASE>
<PHRASE Label="lu_comm_Today" Module="In-Commerce" Type="0">VG9kYXk=</PHRASE>
<PHRASE Label="lu_comm_TopSeller" Module="In-Commerce" Type="0">VG9wIFNlbGxlcg==</PHRASE>
<PHRASE Label="lu_comm_TopSellers" Module="In-Commerce" Type="0">VG9wIFNlbGxlcnM=</PHRASE>
<PHRASE Label="lu_comm_Total" Module="In-Commerce" Type="0">VG90YWw=</PHRASE>
<PHRASE Label="lu_comm_TotalCommissionEarned" Module="In-Commerce" Type="0">Q29tbWlzc2lvbiBFYXJuZWQ=</PHRASE>
<PHRASE Label="lu_comm_TotalOrderAmount" Module="In-Commerce" Type="0">T3JkZXIgVG90YWwgQW1vdW50</PHRASE>
<PHRASE Label="lu_comm_TotalOrders" Module="In-Commerce" Type="0">T3JkZXJz</PHRASE>
<PHRASE Label="lu_comm_TotalSavings" Module="In-Commerce" Type="0">VG90YWwgU2F2aW5ncw==</PHRASE>
<PHRASE Label="lu_comm_TotalVisitors" Module="In-Commerce" Type="0">VmlzaXRvcnM=</PHRASE>
<PHRASE Label="lu_comm_TotalWithoutVAT" Module="In-Commerce" Type="0">VG90YWwgV2l0aG91dCBTYWxlcyBUYXgvVkFU</PHRASE>
<PHRASE Label="lu_comm_TryRecomendedProductd" Module="In-Commerce" Type="0">WW91IG1heSBhbHNvIHdpc2ggdG8gdHJ5IG91ciByZWNvbW1lbmRlZCBwcm9kdWN0cw==</PHRASE>
<PHRASE Label="lu_comm_TryRecommendedProducts" Module="In-Commerce" Type="0">WW91IG1heSBhbHNvIHdpc2ggdG8gdHJ5IG91ciByZWNvbW1lbmRlZCBwcm9kdWN0cw==</PHRASE>
<PHRASE Label="lu_comm_Unsubscribe" Module="In-Commerce" Type="0">VW5zdWJzY3JpYmU=</PHRASE>
<PHRASE Label="lu_comm_Update" Module="In-Commerce" Type="0">VXBkYXRl</PHRASE>
<PHRASE Label="lu_comm_UpdateAddress" Module="In-Commerce" Type="0">VXBkYXRlIEFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_comm_UpdateCart" Module="In-Commerce" Type="0">VXBkYXRlIENhcnQ=</PHRASE>
<PHRASE Label="lu_comm_UpdateCartItem" Module="In-Commerce" Type="0">VXBkYXRlIE9wdGlvbnM=</PHRASE>
<PHRASE Label="lu_comm_UpdateShipping" Module="In-Commerce" Type="0">VXBkYXRlIFNoaXBwaW5n</PHRASE>
<PHRASE Label="lu_comm_VAT" Module="In-Commerce" Type="0">U2FsZXMgVGF4L1ZBVA==</PHRASE>
<PHRASE Label="lu_comm_Version" Module="In-Commerce" Type="0">VmVyc2lvbg==</PHRASE>
<PHRASE Label="lu_comm_ViewAdditionalImages" Module="In-Commerce" Type="0">VmlldyBBZGRpdGlvbmFsIEltYWdlcw==</PHRASE>
<PHRASE Label="lu_comm_ViewRelatedProducts" Module="In-Commerce" Type="0">VmlldyBSZWxhdGVkIFByb2R1Y3Rz</PHRASE>
<PHRASE Label="lu_comm_ViewReviews" Module="In-Commerce" Type="0">VmlldyByZXZpZXdz</PHRASE>
<PHRASE Label="lu_comm_Votes" Module="In-Commerce" Type="0">Vm90ZXM=</PHRASE>
<PHRASE Label="lu_comm_Welcome" Module="In-Commerce" Type="0">V2VsY29tZQ==</PHRASE>
<PHRASE Label="lu_comm_WishList" Module="In-Commerce" Type="0">V2lzaCBMaXN0</PHRASE>
<PHRASE Label="lu_comm_WishListText" Module="In-Commerce" Type="0">VGhlIGl0ZW1zIHlvdSBoYXZlIGFkZGVkIHRvIHRoZSB3aXNoIGxpc3Q=</PHRASE>
<PHRASE Label="lu_comm_Yes" Module="In-Commerce" Type="0">WWVz</PHRASE>
<PHRASE Label="lu_comm_Yesterday" Module="In-Commerce" Type="0">WWVzdGVyZGF5</PHRASE>
<PHRASE Label="lu_comm_YouHaveBackorderedItems" Module="In-Commerce" Type="0">WW91IGhhdmUgb25lIG9yIG1vcmUgYmFja29yZGVyZWQgaXRlbXMgb24geW91ciBzaG9wcGluZyBjYXJ0LiBQbGVhc2UsIHNlbGVjdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBzaGlwbWVudCBvcHRpb24gdGhhdCBtaWd0aCBhZmZlY3QgeW91ciBzaGlwbWVudCBjb3N0</PHRASE>
<PHRASE Label="lu_comm_YourCart" Module="In-Commerce" Type="0">WW91ciBTaG9wcGluZyBDYXJ0</PHRASE>
<PHRASE Label="lu_comm_YourCartIsEmpty" Module="In-Commerce" Type="0">WW91ciBzaG9wcGluZyBjYXJ0IGlzIGVtcHR5</PHRASE>
<PHRASE Label="lu_comm_YourDownloadListEmpty" Module="In-Commerce" Type="0">WW91IGhhdmUgbm8gZG93bmxvYWRhYmxlIHByb2R1Y3RzIHB1cmNoYXNlZCB5ZXQu</PHRASE>
<PHRASE Label="lu_comm_YourDownloads" Module="In-Commerce" Type="0">WW91ciBEb3dubG9hZHM=</PHRASE>
<PHRASE Label="lu_comm_YourEmail" Module="In-Commerce" Type="0">WW91ciBlLW1haWw=</PHRASE>
<PHRASE Label="lu_comm_YourName" Module="In-Commerce" Type="0">WW91ciBuYW1l</PHRASE>
<PHRASE Label="lu_comm_YourPrice" Module="In-Commerce" Type="0">WW91ciBQcmljZQ==</PHRASE>
<PHRASE Label="lu_comm_YourReviewText" Module="In-Commerce" Type="0">RW50ZXIgeW91ciByZXZpZXcgdGV4dA==</PHRASE>
<PHRASE Label="lu_comm_YourWishList" Module="In-Commerce" Type="0">WW91ciBXaXNoIExpc3Q=</PHRASE>
<PHRASE Label="lu_comm_YourWishListEmpty" Module="In-Commerce" Type="0">WW91ciB3aXNoIGxpc3QgaXMgZW1wdHk=</PHRASE>
<PHRASE Label="lu_comm_ZipCode" Module="In-Commerce" Type="0">WmlwIGNvZGU=</PHRASE>
<PHRASE Label="lu_comm_ZoomImage" Module="In-Commerce" Type="0">Wm9vbSBJbWFnZQ==</PHRASE>
<PHRASE Label="lu_ContactInfo" Module="In-Commerce" Type="0">Q29udGFjdCBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_ContactInformation" Module="In-Commerce" Type="0">Q29udGFjdCBpbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_currentaffiliatepaymenttype" Module="In-Commerce" Type="0">UGF5bWVudCB0eXBl</PHRASE>
<PHRASE Label="lu_CustomerLogin" Module="In-Commerce" Type="0">Q3VzdG9tZXIgTG9naW4=</PHRASE>
<PHRASE Label="lu_cvv2_help" Module="In-Commerce" Type="0">VGhyZWUtZGlnaXQgbnVtYmVyIHByaW50ZWQgaW4gdGhlIHNpZ25hdHVyZSBzcGFjZSBvbiB0aGUgYmFjayBvZiBWSVNBLCBNYXN0ZXJDYXJkIGFuZCBEaXNjb3Zlci4gRm91ci1kaWdpdCBudW1iZXIgb24gdGhlIGZyb250IG9mIEFtZXJpY2FuIEV4cHJlc3M=</PHRASE>
<PHRASE Label="lu_DailyDeals" Module="In-Commerce" Type="0">RGFpbHkgRGVhbHM=</PHRASE>
<PHRASE Label="lu_description_Affiliate" Module="In-Commerce" Type="0">WW91ciBBZmZpbGlhdGUgQWNjb3VudCBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_description_MyAddresses" Module="In-Commerce" Type="0">TWFuYWdlIHlvdXIgc2hpcHBpbmcgYW5kIGJpbGxpbmcgYWRkcmVzc2VzIGhlcmU=</PHRASE>
<PHRASE Label="lu_description_MyDownloads" Module="In-Commerce" Type="0">UHVyY2hhc2VkIERvd25sb2Fkcw==</PHRASE>
<PHRASE Label="lu_description_MyOrders" Module="In-Commerce" Type="0">TGlzdCBvZiBwbGFjZWQgT3JkZXJz</PHRASE>
<PHRASE Label="lu_donthaveorders" Module="In-Commerce" Type="0">Tm8gb3JkZXJz</PHRASE>
<PHRASE Label="lu_donthavepayments" Module="In-Commerce" Type="0">Tm8gcGF5bWVudHM=</PHRASE>
<PHRASE Label="lu_donthavevisitors" Module="In-Commerce" Type="0">Tm8gdmlzaXRvcnM=</PHRASE>
<PHRASE Label="lu_EnterBillingAddress" Module="In-Commerce" Type="0">RW50ZXIgQmlsbGluZyBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_EnterShippingAddress" Module="In-Commerce" Type="0">U2hpcHBpbmcgQWRkcmVzcw==</PHRASE>
<PHRASE Label="lu_fav_Products" Module="In-Commerce" Type="0">TXkgRmF2b3JpdGUgUHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_Fax" Module="In-Commerce" Type="0">RmF4</PHRASE>
<PHRASE Label="lu_ferror_rate_duplicate" Module="In-Commerce" Type="0">WW91IGhhdmUgYWxyZWFkeSByYXRlZCB0aGlzIHByb2R1Y3Qh</PHRASE>
<PHRASE Label="lu_field_descriptionex" Module="In-Commerce" Type="0">RGVzY3JpcHRpb24gZXhjZXJwdA==</PHRASE>
<PHRASE Label="lu_field_manufacturer" Module="In-Commerce" Type="2">TWFudWZhY3R1cmVy</PHRASE>
<PHRASE Label="lu_field_newproduct" Module="In-Commerce" Type="0">SXRlbSBJcyBhIE5ldyBQcm9kdWN0</PHRASE>
<PHRASE Label="lu_field_popproduct" Module="In-Commerce" Type="0">SXRlbSBJcyBhIFBvcHVsYXIgUHJvZHVjdA==</PHRASE>
<PHRASE Label="lu_field_price" Module="In-Commerce" Type="0">UHJpY2U=</PHRASE>
<PHRASE Label="lu_field_productid" Module="In-Commerce" Type="0">UHJvZHVjdCBJRA==</PHRASE>
<PHRASE Label="lu_field_producttitle" Module="In-Commerce" Type="0">VGl0bGU=</PHRASE>
<PHRASE Label="lu_field_sku" Module="In-Commerce" Type="0">U0tV</PHRASE>
<PHRASE Label="lu_fld_addedon" Module="In-Commerce" Type="0">QWRkZWQgb24=</PHRASE>
<PHRASE Label="lu_fld_AffiliateComments" Module="In-Commerce" Type="0">Q29tbWVudHM=</PHRASE>
<PHRASE Label="lu_fld_AffiliatePaymentType" Module="In-Commerce" Type="0">UGF5bWVudCB0eXBl</PHRASE>
<PHRASE Label="lu_fld_DownloadLink" Module="In-Commerce" Type="0">RG93bmxvYWQgTGluaw==</PHRASE>
<PHRASE Label="lu_fld_LastUsedAsBilling" Module="In-Commerce" Type="0">RGVmYXVsdCBCaWxsaW5nIEFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_fld_LastUsedAsShipping" Module="In-Commerce" Type="0">RGVmYXVsdCBTaGlwcGluZyBBZGRyZXNz</PHRASE>
<PHRASE Label="lu_fld_manufacturer" Module="In-Commerce" Type="0">TWFudWZhY3R1cmVy</PHRASE>
<PHRASE Label="lu_fld_MSRP" Module="In-Commerce" Type="0">TVNSUA==</PHRASE>
<PHRASE Label="lu_fld_OurPrice" Module="In-Commerce" Type="0">T3VyIFByaWNl</PHRASE>
<PHRASE Label="lu_fld_RegisterAsAffiliate" Module="In-Commerce" Type="0">QmVjb21lIGFuIEFmZmlsaWF0ZQ==</PHRASE>
<PHRASE Label="lu_fld_ReturnTotal" Module="In-Commerce" Type="0">UmV0dXJucw==</PHRASE>
<PHRASE Label="lu_fld_Review" Module="In-Commerce" Type="0">UmV2aWV3</PHRASE>
<PHRASE Label="lu_fld_SKU" Module="In-Commerce" Type="0">U0tV</PHRASE>
<PHRASE Label="lu_fld_SSNField" Module="In-Commerce" Type="0">U29jaWFsIFNlY3VyaXR5ICM=</PHRASE>
<PHRASE Label="lu_fld_YouSave" Module="In-Commerce" Type="0">WW91IFNhdmU=</PHRASE>
<PHRASE Label="lu_hint_OrEnterAddress" Module="In-Commerce" Type="0">b3IgZW50ZXIgbmV3IGFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_hint_profileaddresswarning" Module="In-Commerce" Type="0">UHJvZmlsZSBhZGRyZXNz</PHRASE>
<PHRASE Label="lu_IfForgotPass" Module="In-Commerce" Type="0">SWYgeW91IGZvcmdvdCB5b3VyIHBhc3N3b3JkIGNsaWNr</PHRASE>
<PHRASE Label="lu_in_cookie_permanent" Module="In-Commerce" Type="1">aW4gY29va2llIChwZXJtYW5lbnQp</PHRASE>
<PHRASE Label="lu_Items" Module="In-Commerce" Type="0">SXRlbXM=</PHRASE>
<PHRASE Label="lu_kg" Module="In-Commerce" Type="0">a2c=</PHRASE>
<PHRASE Label="lu_LastUsedAsBilling" Module="In-Commerce" Type="0">RGVmYXVsdCBCaWxsaW5nIEFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_LastUsedAsShipping" Module="In-Commerce" Type="0">RGVmYXVsdCBTaGlwcGluZyBBZGRyZXNz</PHRASE>
<PHRASE Label="lu_Materials" Module="In-Commerce" Type="0">TWF0ZXJpYWxz</PHRASE>
<PHRASE Label="lu_min_qty_error" Module="In-Commerce" Type="0">T25lIG9yIG1vcmUgcHJvZHVjdCBpbiB5b3VyIGNhcnQgcmVxdWlyZXMgbWluaW11bSBxdWFudGl0eSBmb3IgcHVyY2hhc2UuIFlvdXIgY2FydCBoYXMgYmVlbiBhZGp1c3RlZCBhY2NvcmRpbmdseQ==</PHRASE>
<PHRASE Label="lu_more_products" Module="In-Commerce" Type="0">bW9yZQ==</PHRASE>
<PHRASE Label="lu_MultipleShippingTypes" Module="In-Commerce" Type="0">TXVsdGlwbGUgU2hpcHBpbmcgVHlwZXM=</PHRASE>
<PHRASE Label="lu_MyAddresses" Module="In-Commerce" Type="0">TXkgQWRkcmVzc2Vz</PHRASE>
<PHRASE Label="lu_MyDownloads" Module="In-Commerce" Type="0">TXkgRG93bmxvYWRz</PHRASE>
<PHRASE Label="lu_MyOrders" Module="In-Commerce" Type="0">TXkgT3JkZXJz</PHRASE>
<PHRASE Label="lu_MyShoppingCart" Module="In-Commerce" Type="0">TXkgU2hvcHBpbmcgQ2FydA==</PHRASE>
<PHRASE Label="lu_my_affiliate_section" Module="In-Commerce" Type="0">TXkgQWZmaWxpYXRlIFNlY3Rpb24=</PHRASE>
<PHRASE Label="lu_my_downloads" Module="In-Commerce" Type="0">TXkgRG93bmxvYWRz</PHRASE>
<PHRASE Label="lu_my_downloads_description" Module="In-Commerce" Type="0">RG93bmxvYWRzIHlvdSBoYXZlIHB1cmNoYXNlZA==</PHRASE>
<PHRASE Label="lu_my_orders" Module="In-Commerce" Type="0">TXkgT3JkZXJz</PHRASE>
<PHRASE Label="lu_my_orders_description" Module="In-Commerce" Type="0">T3JkZXJzIHlvdSBoYXZlIG1hZGU=</PHRASE>
<PHRASE Label="lu_noorders" Module="In-Commerce" Type="0">Tm8gb3JkZXJz</PHRASE>
<PHRASE Label="lu_NoProducts" Module="In-Commerce" Type="0">Tm8gUHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_NotAvailable" Module="In-Commerce" Type="0">bi9h</PHRASE>
<PHRASE Label="lu_opt_newaddress" Module="In-Commerce" Type="0">QWRkIG5ldyBhZGRyZXNz</PHRASE>
<PHRASE Label="lu_OrderNumber" Module="In-Commerce" Type="0">T3JkZXIgTnVtYmVy</PHRASE>
<PHRASE Label="lu_order_BillingCompany" Module="In-Commerce" Type="0">Q29tcGFueQ==</PHRASE>
<PHRASE Label="lu_order_Cancel" Module="In-Commerce" Type="0">Q2FuY2Vs</PHRASE>
<PHRASE Label="lu_order_CompleteOrder" Module="In-Commerce" Type="0">UGxhY2UgT3JkZXI=</PHRASE>
<PHRASE Label="lu_otherproductsby" Module="In-Commerce" Type="0">T3RoZXIgcHJvZHVjdHMgYnk=</PHRASE>
<PHRASE Label="lu_ounces" Module="In-Commerce" Type="0">b3VuY2Vz</PHRASE>
<PHRASE Label="lu_paymentamount" Module="In-Commerce" Type="0">UGF5bWVudCBhbW91bnQ=</PHRASE>
<PHRASE Label="lu_paymentreference" Module="In-Commerce" Type="0">UGF5bWVudCByZWZlcmVuY2U=</PHRASE>
<PHRASE Label="lu_Payments" Module="In-Commerce" Type="0">UGF5bWVudHM=</PHRASE>
<PHRASE Label="lu_PermName_Product.Add_desc" Module="In-Commerce" Type="1">QWRkIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_PermName_Product.Delete_desc" Module="In-Commerce" Type="1">RGVsZXRlIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_PermName_Product.Modify_desc" Module="In-Commerce" Type="1">TW9kaWZ5IFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_PermName_Product.Rate_desc" Module="In-Commerce" Type="1">UmF0ZSBQcm9kdWN0</PHRASE>
<PHRASE Label="lu_PermName_Product.Review_desc" Module="In-Commerce" Type="1">UmV2aWV3IFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_PermName_Product.Review_Pending_desc" Module="In-Commerce" Type="1">UmV2aWV3IFByb2R1Y3QgUGVuZGluZw==</PHRASE>
<PHRASE Label="lu_PermName_Product.View_desc" Module="In-Commerce" Type="1">VmlldyBQcm9kdWN0</PHRASE>
<PHRASE Label="lu_per_session" Module="In-Commerce" Type="1">cGVyIHNlc3Npb24=</PHRASE>
<PHRASE Label="lu_PleaseLogin" Module="In-Commerce" Type="0">UGxlYXNlIExvZ2lu</PHRASE>
<PHRASE Label="lu_pounds" Module="In-Commerce" Type="0">cG91bmRz</PHRASE>
<PHRASE Label="lu_price_calc_optimal" Module="In-Commerce" Type="1">T3B0aW1hbCBQcmljZQ==</PHRASE>
<PHRASE Label="lu_price_calc_primary" Module="In-Commerce" Type="1">UHJpY2UgZm9yIFByaW1hcnkgR3JvdXA=</PHRASE>
<PHRASE Label="lu_ProductDescription" Module="In-Commerce" Type="0">UHJvZHVjdCBEZXNjcmlwdGlvbg==</PHRASE>
<PHRASE Label="lu_ProductFeatures" Module="In-Commerce" Type="0">UFJPRFVDVCBGRUFUVVJFUw==</PHRASE>
<PHRASE Label="lu_ProductImagePreview" Module="In-Commerce" Type="0">UHJvZHVjdCBJbWFnZQ==</PHRASE>
<PHRASE Label="lu_Products" Module="In-Commerce" Type="0">UHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_product_details" Module="In-Commerce" Type="1">UHJvZHVjdCBEZXRhaWxz</PHRASE>
<PHRASE Label="lu_product_reviews" Module="In-Commerce" Type="0">UmV2aWV3cw==</PHRASE>
<PHRASE Label="lu_RateProduct" Module="In-Commerce" Type="0">UmF0ZSBUaGlzIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_rate_product" Module="In-Commerce" Type="0">UmF0ZSBUaGlzIFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_recommend_default_text" Module="In-Commerce" Type="0">SSB0aG91Z2h0IHlvdSBtaWdodCBiZSBpbnRlcmVzdGVkIGluIHRoaXMgaXRlbS4=</PHRASE>
<PHRASE Label="lu_recommend_product_confirm_text" Module="In-Commerce" Type="0">VGhhbmsgeW91IGZvciByZWNvbW1lbmRpbmcgdGhpcyBwcm9kdWN0LiBUaGUgZW1haWwgbWVzc2FnZSBoYXMgYmVlbiBzZW50IG91dC4=</PHRASE>
<PHRASE Label="lu_Recurring" Module="In-Commerce" Type="0">UmVjdXJyaW5n</PHRASE>
<PHRASE Label="lu_recurring_cancel" Module="In-Commerce" Type="0">Q2FuY2VsIFJlY3VycmluZyBPcmRlcg==</PHRASE>
<PHRASE Label="lu_recurring_charge_advance" Module="In-Commerce" Type="0">IGRheShzKSBpbiBhZHZhbmNlLg==</PHRASE>
<PHRASE Label="lu_recurring_next_charge" Module="In-Commerce" Type="0">SXQgd2lsbCBiZSBjaGFyZ2UgZm9yIHRoZSBzYW1lIHRvdGFsIGFtb3VudCBvbiA=</PHRASE>
<PHRASE Label="lu_recurring_notice" Module="In-Commerce" Type="0">VGhpcyBpcyBhIHJlY3VycmluZyBvcmRlci4=</PHRASE>
<PHRASE Label="lu_refererlink" Module="In-Commerce" Type="0">UmVmZXJyZXIgbGluaw==</PHRASE>
<PHRASE Label="lu_RegisterConfirmPending" Module="In-Commerce" Type="0">UmVnaXN0cmF0aW9uIENvbmZpcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_RegistrationCompletedPending" Module="In-Commerce" Type="0">VGhhbmsgWW91LiBSZWdpc3RyYXRpb24gY29tcGxldGVkLiBQcm9jZWVkIHRvIGxvZ2luLg==</PHRASE>
<PHRASE Label="lu_ReturningCustomers" Module="In-Commerce" Type="0">UmV0dXJuaW5nIGN1c3RvbWVycw==</PHRASE>
<PHRASE Label="lu_ReviewProduct" Module="In-Commerce" Type="0">UmV2aWV3IHRoaXMgcHJvZHVjdA==</PHRASE>
<PHRASE Label="lu_SameAsShipping" Module="In-Commerce" Type="0">U2FtZSBBcyBTaGlwcGluZyBBZGRyZXNz</PHRASE>
<PHRASE Label="lu_section_BillingInfo" Module="In-Commerce" Type="0">QmlsbGluZyBJbmZvcm1hdGlvbg==</PHRASE>
<PHRASE Label="lu_section_CostSummary" Module="In-Commerce" Type="0">Q29zdCBTdW1tYXJ5</PHRASE>
<PHRASE Label="lu_section_Files" Module="In-Commerce" Type="0">RmlsZXM=</PHRASE>
<PHRASE Label="lu_section_OrderTotal" Module="In-Commerce" Type="0">T3JkZXIgVG90YWw=</PHRASE>
<PHRASE Label="lu_section_ShippingInfo" Module="In-Commerce" Type="0">U2hpcHBpbmcgSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="lu_shipping_Company" Module="In-Commerce" Type="0">Q29tcGFueQ==</PHRASE>
<PHRASE Label="lu_ship_Address" Module="In-Commerce" Type="0">QWRkcmVzcw==</PHRASE>
<PHRASE Label="lu_ship_AddressLine2" Module="In-Commerce" Type="0">QWRkcmVzcyBMaW5lIDIgKG9wdGlvbmFsKQ==</PHRASE>
<PHRASE Label="lu_ship_all_available" Module="In-Commerce" Type="0">QWxsIGF2YWlsYWJsZSBpdGVtcw==</PHRASE>
<PHRASE Label="lu_ship_all_backordered" Module="In-Commerce" Type="0">QWxsIGJhY2tvcmRlcmVkIGl0ZW1z</PHRASE>
<PHRASE Label="lu_ship_AmountDue" Module="In-Commerce" Type="0">QW1vdW50IER1ZQ==</PHRASE>
<PHRASE Label="lu_ship_backordered" Module="In-Commerce" Type="0">QmFja29yZGVyZWQ=</PHRASE>
<PHRASE Label="lu_ship_BillingPhone" Module="In-Commerce" Type="0">UGxlYXNlIGVudGVyIHlvdXIgYmlsbGluZyBwaG9uZSBudW1iZXIgb24gZmlsZSB3aXRoIHlvdXIgY3JlZGl0IGNhcmQgY29tcGFueQ==</PHRASE>
<PHRASE Label="lu_ship_Checkout" Module="In-Commerce" Type="0">Q2hlY2tvdXQ=</PHRASE>
<PHRASE Label="lu_ship_City" Module="In-Commerce" Type="0">Q2l0eQ==</PHRASE>
<PHRASE Label="lu_ship_ContinueShopping" Module="In-Commerce" Type="0">Q29udGludWUgU2hvcHBpbmc=</PHRASE>
<PHRASE Label="lu_ship_Country" Module="In-Commerce" Type="0">Q291bnRyeQ==</PHRASE>
<PHRASE Label="lu_ship_FillWarning" Module="In-Commerce" Type="0">UGxlYXNlIHVzZSB0aGUgYWRkcmVzcyB0aGF0IGFwcGVhcnMgb24geW91ciBjcmVkaXQgY2FyZCBzdGF0ZW1lbnQuIEluY29tcGxldGUgb3IgaW5jb3JlY3QgaW5mb3JtYXRpb24gbWF5IHJlc3VsdCBpbiBhIGRlbGF5IG9yIGNhbmNlbGxhdGlvbiBvZiB5b3VyIG9yZGVyLg==</PHRASE>
<PHRASE Label="lu_ship_FirstName" Module="In-Commerce" Type="0">Rmlyc3QgTmFtZQ==</PHRASE>
<PHRASE Label="lu_ship_InventoryChanged" Module="In-Commerce" Type="0">SW52ZW50b3J5IGhhcyBjaGFuZ2VkIGR1cmluZyBjaGVja291dCwgcGxlYXNlIHJldmlldw==</PHRASE>
<PHRASE Label="lu_ship_ItemsNumber" Module="In-Commerce" Type="0">TnVtYmVyIG9mIEl0ZW1z</PHRASE>
<PHRASE Label="lu_ship_LastName" Module="In-Commerce" Type="0">TGFzdCBOYW1l</PHRASE>
<PHRASE Label="lu_Ship_Options" Module="In-Commerce" Type="0">U0hJUFBJTkcgT1BUSU9OUw==</PHRASE>
<PHRASE Label="lu_ship_OrderTotal" Module="In-Commerce" Type="0">T3JkZXIgVG90YWw=</PHRASE>
<PHRASE Label="lu_ship_Phone" Module="In-Commerce" Type="0">UGhvbmU=</PHRASE>
<PHRASE Label="lu_ship_RequiredFields" Module="In-Commerce" Type="0">UmVxdWlyZWQgZmllbGRz</PHRASE>
<PHRASE Label="lu_ship_Shipment" Module="In-Commerce" Type="0">U2hpcG1lbnQ=</PHRASE>
<PHRASE Label="lu_ship_ShipmentNumber" Module="In-Commerce" Type="0">U2hpcG1lbnQgTnVtYmVy</PHRASE>
<PHRASE Label="lu_ship_ShippingInformation" Module="In-Commerce" Type="0">U0hJUFBJTkcgSU5GT1JNQVRJT04=</PHRASE>
<PHRASE Label="lu_ship_ShippingTo" Module="In-Commerce" Type="0">U2hpcHBpbmcgdG8gKExhc3QgTmFtZSwgRmlyc3QgTmFtZSk=</PHRASE>
<PHRASE Label="lu_ship_ShippingTotal" Module="In-Commerce" Type="0">U2hpcHBpbmcgVG90YWw=</PHRASE>
<PHRASE Label="lu_ship_ShippingType" Module="In-Commerce" Type="0">U2hpcHBpbmcgVHlwZQ==</PHRASE>
<PHRASE Label="lu_ship_ShippingWeight" Module="In-Commerce" Type="0">U2hpcHBpbmcgV2VpZ2h0</PHRASE>
<PHRASE Label="lu_ship_State" Module="In-Commerce" Type="0">U3RhdGU=</PHRASE>
<PHRASE Label="lu_ship_TotalOrderAmount" Module="In-Commerce" Type="0">VG90YWwgT3JkZXIgQW1vdW50</PHRASE>
<PHRASE Label="lu_ship_UpdateAddress" Module="In-Commerce" Type="0">VXBkYXRlIEFkZHJlc3M=</PHRASE>
<PHRASE Label="lu_ship_UpdateShipping" Module="In-Commerce" Type="0">VXBkYXRlIFNoaXBwaW5n</PHRASE>
<PHRASE Label="lu_ship_VAT" Module="In-Commerce" Type="0">U2FsZXMgVGF4L1ZBVA==</PHRASE>
<PHRASE Label="lu_ship_ZIPCode" Module="In-Commerce" Type="0">WklQIENvZGU=</PHRASE>
<PHRASE Label="lu_SKU" Module="In-Commerce" Type="0">U0tV</PHRASE>
<PHRASE Label="lu_SortProductsBy" Module="In-Commerce" Type="0">U29ydCBQcm9kdWN0cyBCeQ==</PHRASE>
<PHRASE Label="lu_sortResultsBy" Module="In-Commerce" Type="0">U09SVCBSRVNVTFRTIEJZ</PHRASE>
<PHRASE Label="lu_Specials" Module="In-Commerce" Type="0">U3BlY2lhbHM=</PHRASE>
<PHRASE Label="lu_store" Module="In-Commerce" Type="0">U3RvcmU=</PHRASE>
<PHRASE Label="lu_subcategories" Module="In-Commerce" Type="0">U1VCQ0FURUdPUklFUw==</PHRASE>
<PHRASE Label="lu_SuggestRegister" Module="In-Commerce" Type="0">WW91IG1heSBmaWxsIGluIHRoZSBmb3JtIGJlbG93IHRvIHJlZ2lzdGVyLiBSZWdpc3RlcmluZyB3aWxsIGFsbG93IHlvdSB0byB1c2UgTXkgQWNjb3VudCBmZWF0dXJlcyBhbmQgc2ltcGxpZmllZCBjaGVja291dCBwcm9jZXNzIHRoZSBuZXh0IHRpbWUgeW91IHBsYWNlIGFuIG9yZGVyLg==</PHRASE>
<PHRASE Label="lu_TermsAndConditionsLink" Module="In-Commerce" Type="0">VGVybXMgYW5kIENvbmRpdGlvbnM=</PHRASE>
<PHRASE Label="lu_TermsAndConditionsText" Module="In-Commerce" Type="0">QWZmaWxpYXRlIGFncmVlbWVudCwgdGVybXMgJmFtcDthbXA7IGNvbmRpdGlvbnM=</PHRASE>
<PHRASE Label="lu_text_AddProductReviewConfirm" Module="In-Commerce" Type="0">VGhhbmsgeW91IGZvciByZXZpZXdpbmcgdGhlIHByb2R1Y3QuIFlvdXIgcmV2aWV3IGhhcyBiZWVuIHNhdmVkIQ==</PHRASE>
<PHRASE Label="lu_text_addproductreviewpendingconfirm" Module="In-Commerce" Type="0">VGhhbmsgeW91IGZvciByZXZpZXdpbmcgdGhpcyBwcm9kdWN0LiBZb3VyIHJldmlldyBpcyBwZW5kaW5nIGZvciBhZG1pbmlzdHJhdGl2ZSBhcHByb3ZhbC4=</PHRASE>
<PHRASE Label="lu_text_ConfirmPasswordReset" Module="In-Commerce" Type="0">UGxlYXNlIGNvbmZpcm0gdGhhdCB5b3Ugd2FudCB0byByZXNldCB5b3VyIHBhc3N3b3JkLg==</PHRASE>
<PHRASE Label="lu_text_ForgotPassEmailSent" Module="In-Commerce" Type="0">UGFzc3dvcmQgcmV0cml2YWwgY29uZmlybWF0aW9uIGhhcyBiZWVuIHNlbnQgdG8geW91ciBlLW1haWwgYWRkcmVzcy4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBlLW1haWwu</PHRASE>
<PHRASE Label="lu_text_nofilesforthisproduct" Module="In-Commerce" Type="0">Tm8gZmlsZXMgYXZhaWxhYmxlLg==</PHRASE>
<PHRASE Label="lu_text_noproductreviewpermission" Module="In-Commerce" Type="0">Tm8gcGVybWlzc2lvbnMgdG8gcmV2aWV3IHRoaXMgcHJvZHVjdC4=</PHRASE>
<PHRASE Label="lu_text_WeAcceptCreditCards" Module="In-Commerce" Type="0">V2UgQWNjZXB0IENyZWRpdCBDYXJkcw==</PHRASE>
<PHRASE Label="lu_thankyouforbecomingaffiliate" Module="In-Commerce" Type="0">VGhhbmsgeW91IGZvciBiZWNvbWluZyBvdXIgYWZmaWxpYXRlLiBZb3UnbGwgcmVjZWl2aW5nIG1vbnRobHkgdXBkYXRlcyBieSBlbWFpbC4=</PHRASE>
<PHRASE Label="lu_title_AddProductReviewConfirm" Module="In-Commerce" Type="0">UHJvZHVjdCBSZXZpZXcgQWRkZWQ=</PHRASE>
<PHRASE Label="lu_title_Affiliate" Module="In-Commerce" Type="0">QWZmaWxpYXRlIFByb2dyYW0=</PHRASE>
<PHRASE Label="lu_title_affiliatepaymenttype" Module="In-Commerce" Type="0">UGF5bWVuIFR5cGU=</PHRASE>
<PHRASE Label="lu_title_affiliatepaymenttypechanged" Module="In-Commerce" Type="0">UGF5bWVudCBUeXBlIENoYW5nZWQ=</PHRASE>
<PHRASE Label="lu_title_AffiliateRegistration" Module="In-Commerce" Type="0">QmVjb21lIGFuIEFmZmlsaWF0ZQ==</PHRASE>
<PHRASE Label="lu_title_affiliatestatistics" Module="In-Commerce" Type="0">QWZmaWxpYXRlIFN0YXRpc3RpY3M=</PHRASE>
<PHRASE Label="lu_title_affiliatestatisticsorders" Module="In-Commerce" Type="0">T3JkZXJzIFN0YXRpc3RpY3M=</PHRASE>
<PHRASE Label="lu_title_affiliatestatisticsvisits" Module="In-Commerce" Type="0">VmlzaXRvciBTdGF0aXN0aWNz</PHRASE>
<PHRASE Label="lu_title_cancelrecurring" Module="In-Commerce" Type="0">Q2FuY2VsIFJlb2NjdXJpbmcgQmlsbGluZw==</PHRASE>
<PHRASE Label="lu_title_CartIndicator" Module="In-Commerce" Type="0">U2hvcHBpbmcgQ2FydA==</PHRASE>
<PHRASE Label="lu_title_Checkout" Module="In-Commerce" Type="0">Q2hlY2tvdXQ=</PHRASE>
<PHRASE Label="lu_title_CheckoutSteps" Module="In-Commerce" Type="0">Q2hlY2tvdXQgU3RlcHM=</PHRASE>
<PHRASE Label="lu_title_comissionpayments" Module="In-Commerce" Type="0">Q29taXNzaW9uIFBheW1lbnRz</PHRASE>
<PHRASE Label="lu_title_ConfirmPasswordReset" Module="In-Commerce" Type="0">Q29uZmlybSBwYXNzd29yZCByZXNldA==</PHRASE>
<PHRASE Label="lu_title_CreditCards" Module="In-Commerce" Type="0">Q3JlZGl0IENhcmRz</PHRASE>
<PHRASE Label="lu_title_DailyDealsProducts" Module="In-Commerce" Type="0">RGFpbHkgRGVhbHM=</PHRASE>
<PHRASE Label="lu_title_FeaturedProducts" Module="In-Commerce" Type="0">RmVhdHVyZWQgUHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_title_MyDownloads" Module="In-Commerce" Type="0">TXkgRG93bmxvYWRz</PHRASE>
<PHRASE Label="lu_title_MyOrders" Module="In-Commerce" Type="0">TXkgT3JkZXJz</PHRASE>
<PHRASE Label="lu_title_NewProducts" Module="In-Commerce" Type="0">TmV3IFByb2R1Y3Rz</PHRASE>
<PHRASE Label="lu_title_OrderContents" Module="In-Commerce" Type="0">T1JERVIgQ09OVEVOVFM=</PHRASE>
<PHRASE Label="lu_title_OrderPreview" Module="In-Commerce" Type="0">T3JkZXIgUHJldmlldw==</PHRASE>
<PHRASE Label="lu_title_PickProducts" Module="In-Commerce" Type="0">RWRpdG9yJ3MgUGljayBQcm9kdWN0cw==</PHRASE>
<PHRASE Label="lu_title_PopularManufacturers" Module="In-Commerce" Type="0">UG9wdWxhciBCcmFuZHM=</PHRASE>
<PHRASE Label="lu_title_ProductDetails" Module="In-Commerce" Type="0">UHJvZHVjdCBEZXRhaWxz</PHRASE>
<PHRASE Label="lu_title_ProductFiles" Module="In-Commerce" Type="0">UHJvZHVjdCBGaWxlcw==</PHRASE>
<PHRASE Label="lu_title_Products" Module="In-Commerce" Type="0">UHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_title_productsbymanufacturer" Module="In-Commerce" Type="0">UHJvZHVjdHMgYnkgTWFudWZhY3R1cmVy</PHRASE>
<PHRASE Label="lu_title_ProductSearchResults" Module="In-Commerce" Type="0">UHJvZHVjdCBTZWFyY2ggUmVzdWx0cw==</PHRASE>
<PHRASE Label="lu_title_RecentlyViewedProducts" Module="In-Commerce" Type="0">UmVjZW50bHkgVmlld2Vk</PHRASE>
<PHRASE Label="lu_title_RegistrationCompleted" Module="In-Commerce" Type="0">U29ycnkuIE5ldyB1c2VyIHJlZ2lzdHJhdGlvbiBoYXMgYmVlbiBkaXNhYmxlZC4=</PHRASE>
<PHRASE Label="lu_title_RegistrationDisabled" Module="In-Commerce" Type="0">UmVnaXN0cmF0aW9uIERpc2FibGVk</PHRASE>
<PHRASE Label="lu_title_RelatedProducts" Module="In-Commerce" Type="0">UmVsYXRlZCBQcm9kdWN0cw==</PHRASE>
<PHRASE Label="lu_title_ReviewProduct" Module="In-Commerce" Type="0">UmV2aWV3IFByb2R1Y3Q=</PHRASE>
<PHRASE Label="lu_title_ReviewThisProduct" Module="In-Commerce" Type="0">UmV2aWV3IHRoaXMgcHJvZHVjdA==</PHRASE>
<PHRASE Label="lu_title_ShippingInformation" Module="In-Commerce" Type="1">U2hpcHBpbmcgSW5mb3JtYXRpb24=</PHRASE>
<PHRASE Label="lu_title_ShippingOptions" Module="In-Commerce" Type="0">U2hpcHBpbmcgT3B0aW9ucw==</PHRASE>
<PHRASE Label="lu_title_ShoppingCart" Module="In-Commerce" Type="0">U2hvcHBpbmcgQ2FydA==</PHRASE>
<PHRASE Label="lu_title_SpecialsProducts" Module="In-Commerce" Type="0">U3BlY2lhbCBQcm9kdWN0cw==</PHRASE>
<PHRASE Label="lu_title_suggestuserregistration" Module="In-Commerce" Type="0">Tm90IGEgTWVtYmVyPw==</PHRASE>
<PHRASE Label="lu_title_TopSellerProducts" Module="In-Commerce" Type="0">VG9wIFNlbGxlcnM=</PHRASE>
<PHRASE Label="lu_title_TopSellers" Module="In-Commerce" Type="0">VG9wIFNlbGxlcnM=</PHRASE>
<PHRASE Label="lu_title_WishList" Module="In-Commerce" Type="0">WW91ciBXaXNoIExpc3Q=</PHRASE>
<PHRASE Label="lu_title_YourShoppingCart" Module="In-Commerce" Type="0">WW91ciBTaG9wcGluZyBDYXJ0</PHRASE>
<PHRASE Label="lu_total" Module="In-Commerce" Type="0">VG90YWw=</PHRASE>
<PHRASE Label="lu_totalcommissionearned" Module="In-Commerce" Type="0">VG90YWwgY29tbWlzc2lvbnM=</PHRASE>
<PHRASE Label="lu_totalorderamount" Module="In-Commerce" Type="0">VG90YWwgb3JkZXJzIGFtb3VudA==</PHRASE>
<PHRASE Label="lu_totalorders" Module="In-Commerce" Type="0">VG90YWwgb3JkZXJz</PHRASE>
<PHRASE Label="lu_TotalProducts" Module="In-Commerce" Type="0">VG90YWwgcHJvZHVjdHM=</PHRASE>
<PHRASE Label="lu_totalvisitors" Module="In-Commerce" Type="0">VG90YWwgdmlzaXRvcnM=</PHRASE>
<PHRASE Label="lu_WhatIsThis" Module="In-Commerce" Type="0">V2hhdCBpcyB0aGlzPw==</PHRASE>
</PHRASES>
<EVENTS>
<EVENT MessageType="text" Event="AFFILIATE.PAYMENT" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSBjb21taXNzaW9uIHBheW1lbnQgaGFzIGJlZW4gaXNzdWVkCgpZb3VyIGFmZmlsaWF0ZSBjb21taXNzaW9uIHBheW1lbnQgaGFzIGJlZW4gaXNzdWVkLCBwbGVhc2UgbG9naW4gdG8gWW91ciBBY2NvdW50LCBBZmZpbGlhdGUgUGF5bWVudHMgc2VjdGlvbiB0byBjaGVjayB0aGUgZGV0YWlscy4=</EVENT>
<EVENT MessageType="text" Event="AFFILIATE.PAYMENT" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSBjb21taXNzaW9uIHBheW1lbnQgaXNzdWVkCgpBZmZpbGlhdGUgY29tbWlzc2lvbiBwYXltZW50IGhhcyBiZWVuIGlzc3VlZC4=</EVENT>
<EVENT MessageType="text" Event="AFFILIATE.PAYMENT.TYPE.CHANGED" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSBwYXltZW50IHR5cGUgY2hhbmdlZAoKQWZmaWxpYXRlIHBheW1lbnQgdHlwZSBjaGFuZ2Vk</EVENT>
<EVENT MessageType="text" Event="AFFILIATE.REGISTER" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSByZWdpc3RyYXRpb24KCkhlbGxvLA0KDQpUaGFuayB5b3UgZm9yIHJlZ2lzdGVyaW5nIGFzIGFmZmlsaWF0ZS4gWW91IHdpbGwgYmUgbm90aWZpZWQgdmlhIGUtbWFpbCB3aGVuIHlvdXIgcmVnaXN0cmF0aW9uIGlzIGFwcHJvdmVkLg==</EVENT>
<EVENT MessageType="text" Event="AFFILIATE.REGISTER" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSByZWdpc3RlcmVkCgpOZXcgYWZmaWxpYXRlIHVzZXIgaGFzIHJlZ2lzdGVyZWQuIFBsZWFzZSBwcm9jZWVkIHRvIEFkbWluaXN0cmF0aXZlIENvbnNvbGUgdG8gcmV2aWV3IHRoZSByZWdpc3RyYXRpb24u</EVENT>
<EVENT MessageType="text" Event="AFFILIATE.REGISTRATION.APPROVED" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSByZWdpc3RyYXRpb24gYXBwcm92ZWQgCgpBZmZpbGlhdGUgcmVnaXN0cmF0aW9uIGFwcHJvdmVkIA==</EVENT>
<EVENT MessageType="text" Event="AFFILIATE.REGISTRATION.APPROVED" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSByZWdpc3RyYXRpb24gYXBwcm92ZWQgCgpBZmZpbGlhdGUgcmVnaXN0cmF0aW9uIGFwcHJvdmVkIA==</EVENT>
<EVENT MessageType="text" Event="AFFILIATE.REGISTRATION.DENIED" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSByZWdpc3RyYXRpb24gZGVuaWVkCgpBZmZpbGlhdGUgcmVnaXN0cmF0aW9uIGRlbmllZA==</EVENT>
<EVENT MessageType="text" Event="AFFILIATE.REGISTRATION.DENIED" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEFmZmlsaWF0ZSByZWdpc3RyYXRpb24gZGVuaWVkCgpBZmZpbGlhdGUgcmVnaXN0cmF0aW9uIGRlbmllZA==</EVENT>
<EVENT MessageType="text" Event="BACKORDER.ADD" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEJhY2tvcmRlciBhZGRlZAoKRGVhciA8aW5wMjpvcmRfRmllbGQgbmFtZT0iQmlsbGluZ1RvIi8+LA0KDQpZb3VyIGJhY2tvcmRlciBudW1iZXIgPGlucDI6b3JkX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+IGhhcyBiZWVuIGFjY2VwdGVkLiBZb3Ugd2lsbCBiZSBub3RpZmllZCB3aGVuIHRoZSBvcmRlciBpcyBwcm9jZXNzZWQu</EVENT>
<EVENT MessageType="text" Event="BACKORDER.ADD" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEJhY2tvcmRlciBhZGRlZAoKTmV3IGJhY2tvcmRlciBudW1iZXIgPGlucDI6b3JkX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+IGhhcyBiZWVuIGFkZGVkLiBQbGVhc2UgcHJvY2VlZCB0byBhZG1pbmlzdHJhdGl2ZSBjb25zb2xlIHRvIHJldmlldyB0aGUgb3JkZXIu</EVENT>
<EVENT MessageType="text" Event="BACKORDER.FULLFILL" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEJhY2tvcmRlciBmdWxsZmlsbGVkCgpEZWFyIDxpbnAyOm9yZC4taW52X0ZpZWxkIG5hbWU9IkJpbGxpbmdUbyIvPiwNCg0KWW91ciBiYWNrb3JkZXIgbnVtYmVyIDxpbnAyOm9yZC4taW52X0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+IGhhcyBiZWVuIGZ1bGxmaWxsZWQu</EVENT>
<EVENT MessageType="text" Event="BACKORDER.PROCESS" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEJhY2tvcmRlciBwcm9jZXNzZWQKCkRlYXIgPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iQmlsbGluZ1RvIi8+LA0KDQpZb3VyIGJhY2tvcmRlciBudW1iZXIgPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4gaGFzIGJlZW4gcHJvY2Vzc2VkLg==</EVENT>
<EVENT MessageType="text" Event="ORDER.APPROVE" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE9yZGVyIGFwcHJvdmVkCgpEZWFyIDxpbnAyOm9yZC4taW52X0ZpZWxkIG5hbWU9IkJpbGxpbmdUbyIvPiwNCg0KWW91ciBvcmRlciBudW1iZXIgPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4gaGFzIGJlZW4gYXBwcm92ZWQuDQoNCllvdSBjYW4gdXNlIGNvdXBvbnM6DQoNCjxpbnAyOm1fZ2V0IHZhcj0ib3JkZXJfY291cG9ucyIvPg==</EVENT>
<EVENT MessageType="text" Event="ORDER.DENY" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE9yZGVyIGRlbmllZAoKRGVhciA8aW5wMjpvcmQuLWludl9GaWVsZCBuYW1lPSJCaWxsaW5nVG8iLz4sDQoNClNvcnJ5LCBidXQgeW91ciBvcmRlciBudW1iZXIgPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4gaGFzIGJlZW4gZGVuaWVkLg==</EVENT>
<EVENT MessageType="text" Event="ORDER.RECURRING.DENIED" Type="0">U3ViamVjdDogUmVjdXJyaW5nIE9yZGVyIERlbmllZAoKRGVhciA8aW5wMjpvcmQucmVjdXJyaW5nX0ZpZWxkIG5hbWU9IkJpbGxpbmdUbyIvPiwNCg0KU29ycnksIGJ1dCB5b3VyIHJlY3VycmluZyBvcmRlciBudW1iZXIgPGlucDI6b3JkLnJlY3VycmluZ19GaWVsZCBuYW1lPSJPcmRlck51bWJlciIvPiBoYXMgYmVlbiBkZW5pZWQuIA0KDQpQbGVhc2UgY29udGFjdCBzaXRlIGFkbWluaXN0cmF0b3IgYXQgPGlucDI6bV9HZXRDb25maWcgdmFyPSJTbXRwX0FkbWluTWFpbEZyb20iLz4=</EVENT>
<EVENT MessageType="text" Event="ORDER.RECURRING.DENIED" Type="1">U3ViamVjdDogUmVjdXJyaW5nIE9yZGVyIERlbmllZAoKUmVjdXJyaW5nIG9yZGVyIG51bWJlciA8aW5wMjpvcmQucmVjdXJyaW5nX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+IGhhcyBiZWVuIGRlbmllZC4gUGxlYXNlIHByb2NlZWQgdG8gYWRtaW5pc3RyYXRpdmUgY29uc29sZSB0byByZXZpZXcgdGhlIG9yZGVyLg==</EVENT>
<EVENT MessageType="text" Event="ORDER.RECURRING.PROCESSED" Type="0">U3ViamVjdDogUmVjdXJyaW5nIE9yZGVyIFN1Y2Nlc3NmdWxseSBQcm9jZXNzZWQKCkRlYXIgPGlucDI6b3JkLnJlY3VycmluZ19GaWVsZCBuYW1lPSJCaWxsaW5nVG8iLz4sDQoNCllvdXIgcmVjdXJyaW5nIG9yZGVyIG51bWJlciA8aW5wMjpvcmQucmVjdXJyaW5nX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQuIA0KDQpObyBmdXJ0aGVyIGFjdGlvbiBpcyByZXF1aXJlZCBhdCB0aGlzIHRpbWUu</EVENT>
<EVENT MessageType="text" Event="ORDER.RECURRING.PROCESSED" Type="1">U3ViamVjdDogUmVjdXJyaW5nIE9yZGVyIFN1Y2Nlc3NmdWxseSBQcm9jZXNzZWQKClJlY3VycmluZyBvcmRlciBudW1iZXIgPGlucDI6b3JkLnJlY3VycmluZ19GaWVsZCBuYW1lPSJPcmRlck51bWJlciIvPiBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkLiANCg0KTm8gZnVydGhlciBhY3Rpb24gaXMgcmVxdWlyZWQgYXQgdGhpcyB0aW1lLg0K</EVENT>
<EVENT MessageType="text" Event="ORDER.SHIP" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE9yZGVyIHNoaXBwZWQKCkRlYXIgPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iU2hpcHBpbmdUbyIvPiwNCg0KWW91ciBvcmRlciBudW1iZXIgPGlucDI6b3JkLi1pbnZfRmllbGQgbmFtZT0iT3JkZXJOdW1iZXIiLz4gaGFzIGJlZW4gc2hpcHBlZC4=</EVENT>
<EVENT MessageType="html" Event="ORDER.SUBMIT" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IFRoYW5rIHlvdSBmb3IgeW91ciBPcmRlciAoPGlucDI6b3JkX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIiAvPikhCgo8aW5wMjptX0RlZmluZUVsZW1lbnQgbmFtZT0ib3JkZXJpdGVtX2VsZW0iPg0KPGlucDI6RmllbGQgbmFtZT0iUHJvZHVjdE5hbWUiIHBhZD0iMzQiLz4gKHF0eSA8aW5wMjpGaWVsZCBuYW1lPSJRdWFudGl0eSIvPikgPGlucDI6RmllbGQgbmFtZT0iRXh0ZW5kZWRQcmljZSIgY3VycmVuY3k9InNlbGVjdGVkIi8+IDwvaW5wMjptX0RlZmluZUVsZW1lbnQ+DQoNCjxwcmUgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICMwMDAiPg0KRGVhciA8aW5wMjpvcmRfRmllbGQgbmFtZT0iQmlsbGluZ1RvIiAvPiwNCg0KVGhhbmsgeW91IGZvciB5b3VyIHB1cmNoYXNlIQ0KDQo8aW5wMjptX2lmIGNoZWNrPSJvcmRfVXNpbmdDcmVkaXRDYXJkIj4NClBsZWFzZSBhbGxvdyAyNCBob3VycyBmb3IgdXMgdG8gY29uZmlybSBhbmQgcHJvY2VzcyB5b3VyIG9yZGVyLg0KPGlucDI6bV9lbHNlIC8+DQpQbGVhc2Ugc2VuZCBhIGNoZWNrIG9yIGEgbW9uZXkgb3JkZXIgaW4gdGhlIGFtb3VudCBvZiA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IlRvdGFsQW1vdW50IiBjdXJyZW5jeT0ic2VsZWN0ZWQiLz4gdG86DQo8YnI+DQpBZGRyZXNzDQo8YnI+DQpBbGwgY2hlY2tzIG11c3QgYmUgZHJhd24gaW4gVS5TLiBmdW5kcyBmcm9tIGEgVS5TLiBiYW5rLg0KUGxlYXNlIGF0dGFjaCBhIHByaW50b3V0IG9mIHRoaXMgcmVjZWlwdCB3aXRoIHlvdXIgY2hlY2sgYW5kDQp3cml0ZSBkb3duIHlvdXIgb3JkZXIgbnVtYmVyLiAgWW91ciBvcmRlciB3aWxsIGJlIGFwcHJvdmVkDQp3aXRoaW4gOCBidXNpbmVzcyBkYXlzIGFmdGVyIHRoZSBkYXkgd2UgcmVjZWl2ZSB5b3VyIGNoZWNrLA0Kb3Igd2l0aGluIDIgYnVzaW5lc3MgZGF5cyBhZnRlciB3ZSByZWNlaXZlIGEgbW9uZXkgb3JkZXIgb3INCmJhbmsgZHJhZnQuDQo8L2lucDI6bV9pZj4NCg0KDQpCZWxvdyBhcmUgdGhlIGRldGFpbHMgb2YgeW91ciBvcmRlcjoNCg0KT3JkZXIgQ29udGVudHM6DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPGlucDI6b3JkX1ByaW50Q2FydCBpdGVtX3JlbmRlcl9hcz0ib3JkZXJpdGVtX2VsZW0iIGhlYWRlcl9yZW5kZXJfYXM9Imh0bWw6IiBmb290ZXJfcmVuZGVyX2FzPSJodG1sOiIgZW1wdHlfY2FydF9yZW5kZXJfYXM9Imh0bWw6IiBwZXJfcGFnZT0iLTEiLz4gDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KU3ViIFRvdGFsOiAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iU3VidG90YWxXaXRoRGlzY291bnQiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPg0KVGF4ZXM6ICAgICAgIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJWQVQiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPg0KVG90YWw6ICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iVG90YWxBbW91bnQiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPiA8YnI+DQoNCkJpbGxpbmcgSW5mb3JtYXRpb246DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQW1vdW50IEJpbGxlZDogICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJUb3RhbEFtb3VudCIgY3VycmVuY3k9InNlbGVjdGVkIi8+PGlucDI6bV9pZiBjaGVjaz0ib3JkX1VzaW5nQ3JlZGl0Q2FyZCI+DQpQYXltZW50IFR5cGU6ICAgICA8aW5wMjpvcmRfRmllbGQgbmFtZT0iUGF5bWVudFR5cGUiIC8+DQpDcmVkaXQgQ2FyZDogICAgICA8aW5wMjpvcmRfRmllbGQgbmFtZT0iUGF5bWVudEFjY291bnQiIG1hc2tlZD0ibWFza2VkIi8+PGlucDI6bV9lbHNlIC8+DQpQYXltZW50IFR5cGU6ICAgICA8aW5wMjpvcmRfRmllbGQgbmFtZT0iUGF5bWVudFR5cGUiIC8+IDwvaW5wMjptX2lmPjxicj4NCg0KQ29udGFjdCBJbmZvcm1hdGlvbjoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCk5hbWU6ICAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1RvIi8+IDxpbnAyOm1faWYgY2hlY2s9Im9yZF9GaWVsZCIgbmFtZT0iQmlsbGluZ0VtYWlsIj4NCkUtbWFpbDogICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0VtYWlsIi8+IDxpbnAyOm1fZWxzZSAvPg0KRS1tYWlsOiAgICAgICAgICAgPGlucDI6dV9GaWVsZCBmaWVsZD0iRW1haWwiLz4gPC9pbnAyOm1faWY+DQpDb21wYW55L09yZ2FuaXphdGlvbjogICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nQ29tcGFueSIvPg0KUGhvbmU6ICAgICAgICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nUGhvbmUiLz4NCkZheDogICAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0ZheCIvPg0KQWRkcmVzcyBMaW5lIDE6ICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nQWRkcmVzczEiLz4NCkFkZHJlc3MgTGluZSAyOiAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0FkZHJlc3MyIi8+DQpDaXR5OiAgICAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdDaXR5Ii8+DQpTdGF0ZTogICAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdTdGF0ZSIvPiANClpJUCBDb2RlOiAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1ppcCIvPg0KQ291bnRyeTogICAgICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nQ291bnRyeSIvPg0KPC9wcmU+</EVENT>
<EVENT MessageType="html" Event="ORDER.SUBMIT" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IE9yZGVyIFN1Ym1pdHRlZCAoPGlucDI6b3JkX0ZpZWxkIG5hbWU9Ik9yZGVyTnVtYmVyIi8+KQoKPGlucDI6bV9EZWZpbmVFbGVtZW50IG5hbWU9Im9yZGVyaXRlbV9lbGVtIj4NCjxpbnAyOkZpZWxkIG5hbWU9IlByb2R1Y3ROYW1lIiBwYWQ9IjM0Ii8+IChxdHkgPGlucDI6RmllbGQgbmFtZT0iUXVhbnRpdHkiLz4pIDxpbnAyOkZpZWxkIG5hbWU9IkV4dGVuZGVkUHJpY2UiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPiA8L2lucDI6bV9EZWZpbmVFbGVtZW50Pg0KDQo8cHJlIHN0eWxlPSJmb250LXNpemU6IDEycHg7IGNvbG9yOiAjMDAwIj4NCkEgbmV3IG9yZGVyIGhhcyBiZWVuIHBsYWNlZC4gQmVsb3cgaXMgdGhlIHJlY2VpcHQgdGhhdCBoYXMgYmVlbiBzZW50IHRvIHRoZSBjdXN0b21lci4NClBsZWFzZSBwcm9jZWVkIHRvIGFkbWluaXN0cmF0aW9uIHNlY3Rpb24gdG8gYXBwcm92ZSB0aGlzIG9yZGVyLg0KDQpPcmRlciBOdW1iZXI6IDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJPcmRlck51bWJlciIgLz4NCkRhdGUvVGltZTogPGlucDI6b3JkX0ZpZWxkIG5hbWU9Ik9yZGVyRGF0ZSIgLz4NCg0KRGVhciA8aW5wMjpvcmRfRmllbGQgbmFtZT0iQmlsbGluZ1RvIiAvPiwNCg0KVGhhbmsgeW91IGZvciB5b3VyIHB1cmNoYXNlIQ0KDQo8aW5wMjptX2lmIGNoZWNrPSJvcmRfVXNpbmdDcmVkaXRDYXJkIj4NClBsZWFzZSBhbGxvdyAyNCBob3VycyBmb3IgdXMgdG8gY29uZmlybSBhbmQgcHJvY2VzcyB5b3VyIG9yZGVyLg0KPGlucDI6bV9lbHNlIC8+DQpQbGVhc2Ugc2VuZCBhIGNoZWNrIG9yIGEgbW9uZXkgb3JkZXIgaW4gdGhlIGFtb3VudCBvZiA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IlRvdGFsQW1vdW50IiBjdXJyZW5jeT0ic2VsZWN0ZWQiLz4gdG86DQo8YnI+DQpBZGRyZXNzDQo8YnI+DQpBbGwgY2hlY2tzIG11c3QgYmUgZHJhd24gaW4gVS5TLiBmdW5kcyBmcm9tIGEgVS5TLiBiYW5rLg0KUGxlYXNlIGF0dGFjaCBhIHByaW50b3V0IG9mIHRoaXMgcmVjZWlwdCB3aXRoIHlvdXIgY2hlY2sgYW5kDQp3cml0ZSBkb3duIHlvdXIgb3JkZXIgbnVtYmVyLiAgWW91ciBvcmRlciB3aWxsIGJlIGFwcHJvdmVkDQp3aXRoaW4gOCBidXNpbmVzcyBkYXlzIGFmdGVyIHRoZSBkYXkgd2UgcmVjZWl2ZSB5b3VyIGNoZWNrLA0Kb3Igd2l0aGluIDIgYnVzaW5lc3MgZGF5cyBhZnRlciB3ZSByZWNlaXZlIGEgbW9uZXkgb3JkZXIgb3INCmJhbmsgZHJhZnQuDQo8L2lucDI6bV9pZj4NCg0KDQpCZWxvdyBhcmUgdGhlIGRldGFpbHMgb2YgeW91ciBvcmRlcjoNCg0KT3JkZXIgQ29udGVudHM6DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPGlucDI6b3JkX1ByaW50Q2FydCBpdGVtX3JlbmRlcl9hcz0ib3JkZXJpdGVtX2VsZW0iIGhlYWRlcl9yZW5kZXJfYXM9Imh0bWw6IiBmb290ZXJfcmVuZGVyX2FzPSJodG1sOiIgZW1wdHlfY2FydF9yZW5kZXJfYXM9Imh0bWw6IiBwZXJfcGFnZT0iLTEiLz4gDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KU3ViIFRvdGFsOiAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iU3VidG90YWxXaXRoRGlzY291bnQiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPg0KVGF4ZXM6ICAgICAgIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJWQVQiIGN1cnJlbmN5PSJzZWxlY3RlZCIvPjxici8+DQpUb3RhbDogICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJUb3RhbEFtb3VudCIgY3VycmVuY3k9InNlbGVjdGVkIi8+IDxicj4NCg0KQmlsbGluZyBJbmZvcm1hdGlvbjoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpBbW91bnQgQmlsbGVkOiAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IlRvdGFsQW1vdW50IiBjdXJyZW5jeT0ic2VsZWN0ZWQiLz48aW5wMjptX2lmIGNoZWNrPSJvcmRfVXNpbmdDcmVkaXRDYXJkIj4NClBheW1lbnQgVHlwZTogICAgIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJQYXltZW50VHlwZSIgLz4NCkNyZWRpdCBDYXJkOiAgICAgIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJQYXltZW50QWNjb3VudCIgbWFza2VkPSJtYXNrZWQiLz48aW5wMjptX2Vsc2UgLz4NClBheW1lbnQgVHlwZTogICAgIDxpbnAyOm9yZF9GaWVsZCBuYW1lPSJQYXltZW50VHlwZSIgLz4gPC9pbnAyOm1faWY+PGJyLz4NCg0KQ29udGFjdCBJbmZvcm1hdGlvbjoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KTmFtZTogICAgICAgICAgICAgPGlucDI6b3JkX0ZpZWxkIGZpZWxkPSJCaWxsaW5nVG8iLz48YnIvPiA8aW5wMjptX2lmIGNoZWNrPSJvcmRfRmllbGQiIG5hbWU9IkJpbGxpbmdFbWFpbCI+DQpFLW1haWw6ICAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdFbWFpbCIvPjxici8+IDxpbnAyOm1fZWxzZSAvPg0KRS1tYWlsOiAgICAgICAgICAgPGlucDI6dV9GaWVsZCBmaWVsZD0iRW1haWwiLz48YnIvPiA8L2lucDI6bV9pZj4NCkNvbXBhbnkvT3JnYW5pemF0aW9uOiAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdDb21wYW55Ii8+PGJyLz4NClBob25lOiAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1Bob25lIi8+PGJyLz4NCkZheDogICAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ0ZheCIvPjxici8+DQpBZGRyZXNzIExpbmUgMTogICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdBZGRyZXNzMSIvPjxici8+DQpBZGRyZXNzIExpbmUgMjogICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdBZGRyZXNzMiIvPjxici8+DQpDaXR5OiAgICAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdDaXR5Ii8+PGJyLz4NClN0YXRlOiAgICAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1N0YXRlIi8+PGJyLz4NClpJUCBDb2RlOiAgICAgICAgIDxpbnAyOm9yZF9GaWVsZCBmaWVsZD0iQmlsbGluZ1ppcCIvPjxici8+DQpDb3VudHJ5OiAgICAgICAgICA8aW5wMjpvcmRfRmllbGQgZmllbGQ9IkJpbGxpbmdDb3VudHJ5Ii8+PGJyLz4NCjwvcHJlPg==</EVENT>
<EVENT MessageType="html" Event="PRODUCT.SUGGEST" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IFlvdXIgZnJpZW5kIGhhcyByZWNvbW1lbmRlZCB0aGlzIGl0ZW0gZm9yIHlvdQoKRGVhciA8aW5wMjptX3BhcmFtIG5hbWU9InRvX25hbWUiIC8+LDxicj4NCjxicj4NCjxpbnAyOm1fcGFyYW0gbmFtZT0iZnJvbV9uYW1lIiAvPiB0aGlua3MgdGhhdCB0aGlzIGl0ZW0gaW4gb3VyIG9ubGluZSBzdG9yZSBtaWdodCBiZSBvZiBpbnRlcmVzdCB0byB5b3UuIDxpbnAyOm1fcGFyYW0gbmFtZT0iZnJvbV9uYW1lIiAvPiB3cml0ZXM6PGJyPg0KLS0tLTxicj4NCjxibG9ja3F1b3RlPg0KPGlucDI6bV9wYXJhbSBuYW1lPSJtZXNzYWdlX3RleHQiLz4NCjwvYmxvY2txdW90ZT4NCi0tLS08YnI+DQo8YnI+DQpUbyBzZWUgdGhlIGl0ZW0gZGV0YWlscywgcGxlYXNlIDxhIGhyZWY9IjxpbnAyOnBfUHJvZHVjdExpbmsgdGVtcGxhdGU9ImluLWNvbW1lcmNlL3Byb2R1Y3QvZGV0YWlscyIvPiI+Y2xpY2sgaGVyZTwvYT4uPGJyPg0KPGJyPg0KU2luY2VyZWx5LDxicj4NCjxpbnAyOmNvbmZfQ29uZmlnVmFsdWUgbmFtZT0iU2l0ZV9OYW1lIi8+IG9ubGluZSBzdG9yZSBBZG1pbmlzdHJhdGlvbjxicj4NCjxicj4NCjxzcGFuIHN0eWxlPSJmb250LXNpemU6IHNtYWxsOyBjb2xvcjogIzU1NSI+DQpUaGlzIGVtYWlsIHdhcyBnZW5lcmF0ZWQgYmVjYXVzZSBzb21lb25lIHdobyBrbm93cyB5b3VyIGVtYWlsIGFkZHJlc3MgaGFzIGNob3NlbiB0byBub3RpZnkgeW91IGFib3V0IG9uZSBvZiBvdXIgcHJvZHVjdHMuIFRoaXMgaXMgYW4gYXV0b21hdGljIGZlYXR1cmUgb2Ygb3VyIG9ubGluZSBzdG9yZS4gWW91ciBlbWFpbCBhZGRyZXNzIGhhcyBub3QgYmVlbiByZWNvcmRlZCwgYW5kIHlvdSBoYXZlIG5vdCBiZWVuIHN1YnNjcmliZWQgdG8gYW55IG1haWxpbmcgbGlzdHMuIFdlIGFwb2xvZ2l6ZSBmb3IgYW55IGluY29udmVuaWVuY2UgdGhpcyBtZXNzYWdlIG1pZ2h0IGhhdmUgY2F1c2VkLg0KPC9zbWFsbD4=</EVENT>
<EVENT MessageType="html" Event="PRODUCT.SUGGEST" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IFByb2R1Y3Qgc3VnZ2VzdGVkIHRvIGEgZnJpZW5kCgpBIHByb2R1Y3QgZnJvbSBoYXMgYmVlbiBzdWdnZXN0ZWQuPGJyPg0KPGJyPg0KU3VnZ2VzdGVkIHByb2R1Y3QgZGV0YWlsczogPGEgaHJlZj0iPGlucDI6cF9Qcm9kdWN0TGluayB0ZW1wbGF0ZT0iaW4tY29tbWVyY2UvcHJvZHVjdC9kZXRhaWxzIi8+Ij48aW5wMjpwX0ZpZWxkIG5hbWU9Ik5hbWUiLz48L2E+PGJyPg0K</EVENT>
<EVENT MessageType="html" Event="SITE.SUGGEST" Type="0">WC1Qcmlvcml0eTogMQpYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IFlvdXIgZnJpZW5kIGhhcyByZWNvbW1lbmRlZCB0aGlzIHNpdGUgdG8geW91CgpZb3VyIGZyaWVuZCB0aG91Z2h0IHlvdSBtaWdodCBmaW5kIHRoaXMgc2l0ZSBpbnRlcmVzdGluZy4gUGxlYXNlIHZpc2l0IDxhIGhyZWY9IjxpbnAyOm1fQmFzZVVSTCAvPiI+PGlucDI6bV9CYXNlVVJMIC8+PC9hPg0KDQo=</EVENT>
<EVENT MessageType="text" Event="SITE.SUGGEST" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IFNpdGUgaGFzIGJlZW4gc3VnZ2VzdGVkCgpZb3VyIHNpdGUgaGFzIGJlZW4gc3VnZ2VzdGVkLg==</EVENT>
<EVENT MessageType="text" Event="USER.GIFTCERTIFICATE" Type="0">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEdpZnQgQ2VydGlmaWNhdGUgSW5zaWRlCgpEZWFyIDxpbnAyOm1fcGFyYW0gbmFtZT0idG9fbmFtZSIvPiwNCg0KUGxlYXNlIGFjY2VwdCB0aGlzIGdpZnQgY2VydGlmaWNhdGUgZm9yIHRoZSBhbW91bnQgb2YgPGlucDI6bV9wYXJhbSBuYW1lPSJhbW91bnQiLz4gLg0KDQpDZXJ0aWZpY2F0ZSBjb2RlIGlzOiA8aW5wMjptX3BhcmFtIG5hbWU9ImdpZmNlcnRfaWQiLz4gYW5kIGNhbiBiZSB1c2VkIGZvciBhbnkgcHVyY2hhc2Ugb24gb3VyIHdlYnNpdGUuDQoNCjxpbnAyOm1fcGFyYW0gbmFtZT0ibWVzc2FnZSIvPg0KDQoNClRoYW5rIHlvdSBmb3Igc2hvcHBpbmcgd2l0aCB1cyENCg0KDQoNCg0K</EVENT>
<EVENT MessageType="text" Event="USER.GIFTCERTIFICATE" Type="1">WC1Qcmlvcml0eTogMQpYLU1TTWFpbC1Qcmlvcml0eTogSGlnaApYLU1haWxlcjogSW4tUG9ydGFsClN1YmplY3Q6IEdpZnQgQ2VydGlmaWNhdGUgLSBFbWFpbCBDb25maXJtYXRpb24KClRoaXMgaXMgYSBjb25maXJtYXRpb24gZW1haWwhDQoNCkdpZnQgQ2VydGlmaWNhdGUgIjxpbnAyOm1fcGFyYW0gbmFtZT0iZ2lmY2VydF9pZCIvPiIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGVtYWlsZWQgdG8gPGlucDI6bV9wYXJhbSBuYW1lPSJ0b19uYW1lIi8+ICg8aW5wMjptX3BhcmFtIG5hbWU9InRvX2VtYWlsIi8+KSAu</EVENT>
</EVENTS>
</LANGUAGE>
</LANGUAGES>
\ No newline at end of file
Property changes on: branches/RC/in-commerce/install/english.lang
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.1.2.10
\ No newline at end of property
+1.1.2.11
\ No newline at end of property

Event Timeline