erp_commerce 4.0.0 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -1
- data/app/models/accepted_credit_card.rb +10 -0
- data/app/models/bank_account.rb +13 -0
- data/app/models/bank_account_type.rb +9 -0
- data/app/models/credit_card.rb +54 -19
- data/app/models/credit_card_account.rb +31 -9
- data/app/models/credit_card_account_party_role.rb +17 -0
- data/app/models/credit_card_account_purpose.rb +24 -0
- data/app/models/extensions/financial_txn.rb +62 -1
- data/app/models/extensions/order_txn.rb +48 -0
- data/app/models/extensions/party.rb +26 -13
- data/app/models/extensions/simple_product_offer.rb +3 -0
- data/app/models/payment.rb +21 -0
- data/app/models/payment_gateway.rb +12 -0
- data/app/models/payment_gateway_action.rb +12 -0
- data/app/models/pricing_plan.rb +29 -1
- data/db/data_migrations/20150125202814_add_payment_transaction_types.rb +14 -0
- data/db/migrate/20100823174238_erp_commerce_base.rb +196 -192
- data/db/migrate/20160310163057_add_created_by_updated_by_to_erp_commerce.rb +35 -0
- data/lib/erp_commerce.rb +1 -2
- data/lib/erp_commerce/config.rb +2 -3
- data/lib/erp_commerce/engine.rb +1 -5
- data/lib/erp_commerce/extensions/active_record/acts_as_priceable.rb +1 -2
- data/lib/erp_commerce/version.rb +1 -1
- metadata +12 -32
- data/app/mailers/checkout_mailer.rb +0 -9
- data/app/views/checkout_mailer/email_confirmation.html.erb +0 -15
- data/app/widgets/orders/base.rb +0 -36
- data/app/widgets/orders/javascript/orders.js +0 -12
- data/app/widgets/orders/views/index.html.erb +0 -63
- data/app/widgets/product_catalog/base.rb +0 -52
- data/app/widgets/product_catalog/javascript/product_catalog.js +0 -64
- data/app/widgets/product_catalog/views/add_to_cart.html.erb +0 -10
- data/app/widgets/product_catalog/views/index.html.erb +0 -69
- data/app/widgets/product_catalog/views/show.html.erb +0 -23
- data/app/widgets/shopping_cart/base.rb +0 -175
- data/app/widgets/shopping_cart/javascript/shopping_cart.js +0 -110
- data/app/widgets/shopping_cart/views/cart_items.html.erb +0 -83
- data/app/widgets/shopping_cart/views/confirmation.html.erb +0 -11
- data/app/widgets/shopping_cart/views/demographics.html.erb +0 -142
- data/app/widgets/shopping_cart/views/login.html.erb +0 -1
- data/app/widgets/shopping_cart/views/payment.html.erb +0 -81
- data/app/widgets/shopping_cart/views/price_summary.html.erb +0 -4
- data/lib/erp_commerce/active_merchant_wrappers.rb +0 -3
- data/lib/erp_commerce/active_merchant_wrappers/authorize_net_wrapper.rb +0 -66
- data/lib/erp_commerce/active_merchant_wrappers/brain_tree_gateway_wrapper.rb +0 -68
- data/lib/erp_commerce/active_merchant_wrappers/credit_card_validation.rb +0 -34
- data/lib/erp_commerce/order_helper.rb +0 -245
@@ -1,10 +0,0 @@
|
|
1
|
-
<%= @product_type.description %>
|
2
|
-
<br/>
|
3
|
-
<p><%= raw @product_type.find_description_by_iid('long_description').description %></p>
|
4
|
-
<br/>
|
5
|
-
Added to cart
|
6
|
-
<br/>
|
7
|
-
<%=link_to_remote 'Continue Shopping', build_widget_url(:index)%> | <a href="<%=@cart_items_url%>">Go to Cart</a>
|
8
|
-
<script type="text/javascript">
|
9
|
-
Compass.ErpApp.Widgets.refreshWidget('shopping_cart', 'price_summary');
|
10
|
-
</script>
|
@@ -1,69 +0,0 @@
|
|
1
|
-
<style type="text/css">
|
2
|
-
#products-view {
|
3
|
-
font-family:'Lucida Grande','Lucida Sans Unicode',sans-serif;
|
4
|
-
text-align:center;
|
5
|
-
font-size:14px;
|
6
|
-
width:100%;
|
7
|
-
border-collapse: collapse;
|
8
|
-
border: 2px solid #CCCCCC;
|
9
|
-
}
|
10
|
-
|
11
|
-
#products-view a {
|
12
|
-
text-decoration:none;
|
13
|
-
}
|
14
|
-
|
15
|
-
#products-view img {
|
16
|
-
height:60px;
|
17
|
-
width:65px;
|
18
|
-
padding-right:15px;
|
19
|
-
}
|
20
|
-
|
21
|
-
#products-view div
|
22
|
-
{
|
23
|
-
float:left;
|
24
|
-
text-align:left;
|
25
|
-
}
|
26
|
-
|
27
|
-
#products-view th {
|
28
|
-
padding: 0 0.5em;
|
29
|
-
height:30px;
|
30
|
-
text-align:center;
|
31
|
-
background:url("/images/knitkit/footer.png") repeat-x scroll 0 0 #29425E;
|
32
|
-
}
|
33
|
-
|
34
|
-
.highlight:hover
|
35
|
-
{
|
36
|
-
background-color:#FFFFEE;
|
37
|
-
}
|
38
|
-
|
39
|
-
#products-view td+td {
|
40
|
-
border-left: 1px solid #CCC;
|
41
|
-
text-align: center;
|
42
|
-
}
|
43
|
-
</style>
|
44
|
-
<div id="<%=widget_result_id%>">
|
45
|
-
<table id="products-view">
|
46
|
-
<thead>
|
47
|
-
<tr>
|
48
|
-
<th>Product</th>
|
49
|
-
<th># Available</th>
|
50
|
-
<th>Buy It</th>
|
51
|
-
</tr>
|
52
|
-
</thead>
|
53
|
-
<tbody>
|
54
|
-
<% ProductType.all.each do |product_type| %>
|
55
|
-
<tr class="product-wrap highlight">
|
56
|
-
<td>
|
57
|
-
<div><img src="<%=product_type.images.empty? ? '/images/img_blank.png' : product_type.images.first.data.url%>" alt="Product Image" /></div>
|
58
|
-
<div>
|
59
|
-
<span><%=link_to_remote product_type.description, build_widget_url(:show, product_type.id) %></span><br/>
|
60
|
-
<span><%=product_type.get_current_simple_amount_with_currency.nil? ? 'no price set' : product_type.get_current_simple_amount_with_currency%></span>
|
61
|
-
</div>
|
62
|
-
</td>
|
63
|
-
<td><%=product_type.inventory_entries.first.number_available%></td>
|
64
|
-
<td><%=link_to_remote 'Add To Cart', build_widget_url(:add_to_cart, product_type.id) %></td>
|
65
|
-
</tr>
|
66
|
-
<%end%>
|
67
|
-
</tbody>
|
68
|
-
</table>
|
69
|
-
</div>
|
@@ -1,23 +0,0 @@
|
|
1
|
-
<div id="<%=widget_result_id%>">
|
2
|
-
<%=link_to_remote "<- Back To List", build_widget_url(:back_to_catalog) %>
|
3
|
-
<br/><br/>
|
4
|
-
<ul style="margin: 0;padding: 0;list-style-type: none;">
|
5
|
-
<% @product_type.images.each do |image| %>
|
6
|
-
<li style="display: inline;background:none;">
|
7
|
-
<img src="<%=image.data.url%>" />
|
8
|
-
</li>
|
9
|
-
<% end %>
|
10
|
-
</ul>
|
11
|
-
<br/>
|
12
|
-
<h2>
|
13
|
-
<%=@product_type.get_current_simple_amount_with_currency.nil? ? 'no price set' : @product_type.get_current_simple_amount_with_currency%>
|
14
|
-
<br/>
|
15
|
-
<%=@product_type.inventory_entries.first.number_available%> Available
|
16
|
-
</h2>
|
17
|
-
<hr/>
|
18
|
-
<p>
|
19
|
-
<%=raw @product_type.find_description_by_iid('long_description').description%>
|
20
|
-
</p>
|
21
|
-
<br/>
|
22
|
-
<%=link_to_remote 'Add To Cart', build_widget_url(:add_to_cart, @product_type.id) %>
|
23
|
-
</div>
|
@@ -1,175 +0,0 @@
|
|
1
|
-
module Widgets
|
2
|
-
module ShoppingCart
|
3
|
-
class Base < ErpApp::Widgets::Base
|
4
|
-
class Helper
|
5
|
-
include Singleton
|
6
|
-
include ActionView::Helpers::NumberHelper
|
7
|
-
end
|
8
|
-
|
9
|
-
def help
|
10
|
-
Helper.instance
|
11
|
-
end
|
12
|
-
|
13
|
-
def price_summary
|
14
|
-
@item_count = 0
|
15
|
-
@cart_items_url = params[:cart_items_url]
|
16
|
-
|
17
|
-
#if we have an order started get all charges
|
18
|
-
order = ErpCommerce::OrderHelper.new(self).get_order
|
19
|
-
@item_count = order.line_items.count unless order.nil?
|
20
|
-
set_total_price(order)
|
21
|
-
|
22
|
-
render
|
23
|
-
end
|
24
|
-
|
25
|
-
def cart_items
|
26
|
-
@price = 0
|
27
|
-
@products_url = params[:products_url]
|
28
|
-
@order = ErpCommerce::OrderHelper.new(self).get_order(true)
|
29
|
-
set_total_price(@order)
|
30
|
-
|
31
|
-
render
|
32
|
-
end
|
33
|
-
|
34
|
-
def remove_from_cart
|
35
|
-
@products_url = params[:products_url]
|
36
|
-
@order = ErpCommerce::OrderHelper.new(self).remove_from_cart(params[:id])
|
37
|
-
set_total_price(@order)
|
38
|
-
|
39
|
-
render :update => {:id => "#{@uuid}_result", :view => :cart_items}
|
40
|
-
end
|
41
|
-
|
42
|
-
def checkout_demographics
|
43
|
-
unless self.current_user.nil?
|
44
|
-
params[:ship_to_billing] = 'on'
|
45
|
-
params[:bill_to_email] = current_user.email
|
46
|
-
@products_url = params[:products_url]
|
47
|
-
@order = ErpCommerce::OrderHelper.new(self).get_order
|
48
|
-
set_total_price(@order)
|
49
|
-
|
50
|
-
render :update => {:id => "#{@uuid}_result", :view => :demographics}
|
51
|
-
else
|
52
|
-
render :update => {:id => "#{@uuid}_result", :view => :login}
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def checkout_payment
|
57
|
-
@products_url = params[:products_url]
|
58
|
-
order_helper = ErpCommerce::OrderHelper.new(self)
|
59
|
-
@order = order_helper.get_order
|
60
|
-
set_total_price(@order)
|
61
|
-
|
62
|
-
messages = validate_demographics
|
63
|
-
unless messages.empty?
|
64
|
-
|
65
|
-
@billing_error_message = '<ul>'
|
66
|
-
messages.select{|item| item =~ /^B/}.collect{|item| "<li>#{item}</li>"}.each do |html| @billing_error_message << html end
|
67
|
-
@billing_error_message << '</ul>'
|
68
|
-
|
69
|
-
@shipping_error_message = '<ul>'
|
70
|
-
messages.select{|item| item =~ /^S/}.collect{|item| "<li>#{item}</li>"}.each do |html| @shipping_error_message << html end
|
71
|
-
@shipping_error_message << '</ul>'
|
72
|
-
|
73
|
-
render :update => {:id => "#{@uuid}_result", :view => :demographics}
|
74
|
-
else
|
75
|
-
@order = order_helper.set_demographic_info(params)
|
76
|
-
|
77
|
-
render :update => {:id => "#{@uuid}_result", :view => :payment}
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def checkout_finalize
|
82
|
-
@products_url = params[:products_url]
|
83
|
-
success, @message, @order, @payment = ErpCommerce::OrderHelper.new(self).complete_order(params)
|
84
|
-
set_total_price(@order)
|
85
|
-
|
86
|
-
if success
|
87
|
-
CheckoutMailer.email_confirmation(self.current_user.party.billing_email_address.email_address, @order, @payment).deliver
|
88
|
-
render :update => {:id => "#{@uuid}_result", :view => :confirmation}
|
89
|
-
else
|
90
|
-
render :update => {:id => "#{@uuid}_result", :view => :payment}
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
private
|
95
|
-
|
96
|
-
def set_total_price(order)
|
97
|
-
@price = 0
|
98
|
-
|
99
|
-
#if we have an order started get all charges
|
100
|
-
unless order.nil?
|
101
|
-
order.get_total_charges.each do |money|
|
102
|
-
@price += money.amount
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
#format it
|
107
|
-
@price = help.number_to_currency(@price)
|
108
|
-
end
|
109
|
-
|
110
|
-
def validate_demographics
|
111
|
-
messages = []
|
112
|
-
|
113
|
-
fields = [
|
114
|
-
{:param => '_to_first_name', :name => 'First Name'},
|
115
|
-
{:param => '_to_last_name', :name => 'Last Name'},
|
116
|
-
{:param => '_to_address_line_1', :name => 'Address Line 1'},
|
117
|
-
{:param => '_to_city', :name => 'City'},
|
118
|
-
{:param => '_to_state', :name => 'State'},
|
119
|
-
{:param => '_to_postal_code', :name => 'Postal Code'},
|
120
|
-
{:param => '_to_country', :name => 'Country'},
|
121
|
-
{:param => '_to_phone', :name => 'Phone'},
|
122
|
-
{:param => '_to_email', :name => 'Email'}
|
123
|
-
]
|
124
|
-
|
125
|
-
#check billing fields
|
126
|
-
fields.each do |field|
|
127
|
-
param = ('bill'+field[:param]).to_sym
|
128
|
-
if params[param].blank?
|
129
|
-
messages << "Billing #{field[:name]} is required."
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
#check if shipping is different than billing
|
134
|
-
unless params[:ship_to_billing] == 'on'
|
135
|
-
#check shipping fields
|
136
|
-
fields.each do |field|
|
137
|
-
next if (field[:param] == '_to_phone' or field[:param] == '_to_email')
|
138
|
-
param = ('ship'+field[:param]).to_sym
|
139
|
-
if params[param].blank?
|
140
|
-
messages << "Shipping #{field[:name]} is required."
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
messages
|
146
|
-
end
|
147
|
-
|
148
|
-
#should not be modified
|
149
|
-
#modify at your own risk
|
150
|
-
def locate
|
151
|
-
File.dirname(__FILE__)
|
152
|
-
end
|
153
|
-
|
154
|
-
class << self
|
155
|
-
def title
|
156
|
-
"Shopping Cart"
|
157
|
-
end
|
158
|
-
|
159
|
-
def widget_name
|
160
|
-
File.basename(File.dirname(__FILE__))
|
161
|
-
end
|
162
|
-
|
163
|
-
def base_layout
|
164
|
-
begin
|
165
|
-
file = File.join(File.dirname(__FILE__),"/views/layouts/base.html.erb")
|
166
|
-
IO.read(file)
|
167
|
-
rescue
|
168
|
-
return nil
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
end#Base
|
174
|
-
end#ShoppingCart
|
175
|
-
end#Widgets
|
@@ -1,110 +0,0 @@
|
|
1
|
-
Compass.ErpApp.Widgets.ShoppingCart = {
|
2
|
-
template: new Ext.Template("<%= render_widget :shopping_cart,\n",
|
3
|
-
" :action => :{action},\n",
|
4
|
-
" :params => {:{symbol} => '{url}'} %>"),
|
5
|
-
|
6
|
-
addShoppingCart: function () {
|
7
|
-
var addShoppingCartWidget = Ext.create("Ext.window.Window", {
|
8
|
-
layout: 'fit',
|
9
|
-
width: 300,
|
10
|
-
title: 'Add Shopping Cart Widget',
|
11
|
-
height: 130,
|
12
|
-
buttonAlign: 'center',
|
13
|
-
items: Ext.create("Ext.form.Panel", {
|
14
|
-
labelWidth: 100,
|
15
|
-
frame: false,
|
16
|
-
bodyStyle: 'padding:5px 5px 0',
|
17
|
-
defaults: {
|
18
|
-
width: 225
|
19
|
-
},
|
20
|
-
items: [
|
21
|
-
{
|
22
|
-
xtype: 'combo',
|
23
|
-
forceSelection: true,
|
24
|
-
store: [
|
25
|
-
['price_summary', 'Price Summary'],
|
26
|
-
['cart_items', 'Cart Items']
|
27
|
-
],
|
28
|
-
fieldLabel: 'Widget View',
|
29
|
-
value: 'price_summary',
|
30
|
-
name: 'widgetLayout',
|
31
|
-
allowBlank: false,
|
32
|
-
triggerAction: 'all',
|
33
|
-
listeners: {
|
34
|
-
change: function (field, newValue, oldValue) {
|
35
|
-
var basicForm = field.findParentByType('form').getForm();
|
36
|
-
var cartItemsUrlField = basicForm.findField('cartItemsUrl');
|
37
|
-
var productsUrlField = basicForm.findField('productsUrl');
|
38
|
-
if (newValue == 'price_summary') {
|
39
|
-
cartItemsUrlField.show();
|
40
|
-
productsUrlField.hide();
|
41
|
-
cartItemsUrlField.setValue('/cart-summary');
|
42
|
-
}
|
43
|
-
else {
|
44
|
-
productsUrlField.show();
|
45
|
-
cartItemsUrlField.hide();
|
46
|
-
productsUrlField.setValue('/products');
|
47
|
-
}
|
48
|
-
}
|
49
|
-
}
|
50
|
-
},
|
51
|
-
{
|
52
|
-
xtype: 'textfield',
|
53
|
-
fieldLabel: 'Cart Items Url',
|
54
|
-
name: 'cartItemsUrl',
|
55
|
-
hidden: false,
|
56
|
-
value: '/cart-items'
|
57
|
-
},
|
58
|
-
{
|
59
|
-
xtype: 'textfield',
|
60
|
-
fieldLabel: 'Products Url',
|
61
|
-
name: 'productsUrl',
|
62
|
-
value: '/products',
|
63
|
-
hidden: true
|
64
|
-
}
|
65
|
-
]
|
66
|
-
}),
|
67
|
-
buttons: [
|
68
|
-
{
|
69
|
-
text: 'Submit',
|
70
|
-
listeners: {
|
71
|
-
'click': function (button) {
|
72
|
-
var window = button.findParentByType('window');
|
73
|
-
var formPanel = window.query('form')[0];
|
74
|
-
var basicForm = formPanel.getForm();
|
75
|
-
var action = basicForm.findField('widgetLayout').getValue();
|
76
|
-
|
77
|
-
var data = {action: action};
|
78
|
-
if (action == 'price_summary') {
|
79
|
-
data.symbol = 'cart_items_url';
|
80
|
-
data.url = basicForm.findField('cartItemsUrl').getValue();
|
81
|
-
}
|
82
|
-
else {
|
83
|
-
data.symbol = 'products_url';
|
84
|
-
data.url = basicForm.findField('productsUrl').getValue();
|
85
|
-
}
|
86
|
-
|
87
|
-
//add rendered template to center region editor
|
88
|
-
Ext.getCmp('knitkitCenterRegion').addContentToActiveCodeMirror(Compass.ErpApp.Widgets.ShoppingCart.template.apply(data));
|
89
|
-
addShoppingCartWidget.close();
|
90
|
-
}
|
91
|
-
}
|
92
|
-
},
|
93
|
-
{
|
94
|
-
text: 'Close',
|
95
|
-
handler: function () {
|
96
|
-
addShoppingCartWidget.close();
|
97
|
-
}
|
98
|
-
}
|
99
|
-
]
|
100
|
-
|
101
|
-
});
|
102
|
-
addShoppingCartWidget.show();
|
103
|
-
}
|
104
|
-
};
|
105
|
-
|
106
|
-
Compass.ErpApp.Widgets.AvailableWidgets.push({
|
107
|
-
name: 'Shopping Cart',
|
108
|
-
iconUrl: '/images/icons/shopping_cart/shopping_cart_48x48.png',
|
109
|
-
onClick: Compass.ErpApp.Widgets.ShoppingCart.addShoppingCart
|
110
|
-
});
|
@@ -1,83 +0,0 @@
|
|
1
|
-
<style type="text/css">
|
2
|
-
#products-view {
|
3
|
-
font-family:'Lucida Grande','Lucida Sans Unicode',sans-serif;
|
4
|
-
text-align:center;
|
5
|
-
font-size:14px;
|
6
|
-
width:100%;
|
7
|
-
border-collapse: collapse;
|
8
|
-
border: 2px solid #CCCCCC;
|
9
|
-
}
|
10
|
-
|
11
|
-
#products-view a {
|
12
|
-
text-decoration:none;
|
13
|
-
}
|
14
|
-
|
15
|
-
#products-view img {
|
16
|
-
height:60px;
|
17
|
-
width:65px;
|
18
|
-
padding-right:15px;
|
19
|
-
}
|
20
|
-
|
21
|
-
#products-view div
|
22
|
-
{
|
23
|
-
float:left;
|
24
|
-
text-align:left;
|
25
|
-
}
|
26
|
-
|
27
|
-
#products-view th {
|
28
|
-
padding: 0 0.5em;
|
29
|
-
height:30px;
|
30
|
-
text-align:center;
|
31
|
-
background:url("/images/knitkit/footer.png") repeat-x scroll 0 0 #29425E;
|
32
|
-
}
|
33
|
-
|
34
|
-
.highlight:hover
|
35
|
-
{
|
36
|
-
background-color:#FFFFEE;
|
37
|
-
}
|
38
|
-
|
39
|
-
#products-view td+td {
|
40
|
-
border-left: 1px solid #CCC;
|
41
|
-
text-align: center;
|
42
|
-
}
|
43
|
-
</style>
|
44
|
-
<div id="<%=widget_result_id%>">
|
45
|
-
<h2>Cart Items</h2>
|
46
|
-
<% unless @order.order_line_items.empty? %>
|
47
|
-
<table id="products-view">
|
48
|
-
<thead>
|
49
|
-
<tr>
|
50
|
-
<th>Product</th>
|
51
|
-
<th>Description</th>
|
52
|
-
<th>Quantity</th>
|
53
|
-
<th>Remove</th>
|
54
|
-
<th>Total</th>
|
55
|
-
</tr>
|
56
|
-
</thead>
|
57
|
-
<tbody>
|
58
|
-
<% @order.order_line_items.each do |order_line_item| %>
|
59
|
-
<tr class="product-wrap highlight">
|
60
|
-
<td>
|
61
|
-
<div><img src="<%=order_line_item.product_type.images.empty? ? '/images/img_blank.png' : order_line_item.product_type.images.first.data.url%>" alt="Product Image" /></div>
|
62
|
-
<div>
|
63
|
-
<span><%= raw order_line_item.product_type.description %></span><br/>
|
64
|
-
</div>
|
65
|
-
</td>
|
66
|
-
<td><%= raw order_line_item.product_type.descriptions.find_by_internal_identifier('long_description').description%></td>
|
67
|
-
<td>1</td>
|
68
|
-
<td><%=link_to_remote 'Remove', build_widget_url(:remove_from_cart, order_line_item.id)%></td>
|
69
|
-
<td><span><%=order_line_item.product_type.get_current_simple_amount_with_currency.nil? ? 'no price set' : order_line_item.product_type.get_current_simple_amount_with_currency%></span></td>
|
70
|
-
</tr>
|
71
|
-
<%end%>
|
72
|
-
</tbody>
|
73
|
-
</table>
|
74
|
-
<hr />
|
75
|
-
<div style="float:right"><h2>Total <%=@price%></h2></div>
|
76
|
-
<a href="<%=@products_url%>">Continue Shopping</a><%=link_to_remote ' | Check Out', build_widget_url(:checkout_demographics) unless @order.order_line_items.empty?%>
|
77
|
-
<%else%>
|
78
|
-
<h2>No items in cart.</h2>
|
79
|
-
<%end%>
|
80
|
-
</div>
|
81
|
-
<script type="text/javascript">
|
82
|
-
Compass.ErpApp.Widgets.refreshWidget('shopping_cart', 'price_summary');
|
83
|
-
</script>
|