blob: 51be9541ec3a9910dec92052546a87ed8d255bd6 [file] [log] [blame]
Anand Doshi885e0742015-03-03 14:55:30 +05301// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
Rushabh Mehta3daa49a2014-10-21 16:16:30 +05302// License: GNU General Public License v3. See license.txt
3
4// js inside blog page
5
6// shopping cart
Faris Ansariab74ca72017-05-30 12:54:42 +05307frappe.provide("erpnext.shopping_cart");
8var shopping_cart = erpnext.shopping_cart;
Rushabh Mehta3daa49a2014-10-21 16:16:30 +05309
10$.extend(shopping_cart, {
11 show_error: function(title, text) {
Rushabh Mehtafc3d8712015-07-10 10:11:07 +053012 $("#cart-container").html('<div class="msg-box"><h4>' +
13 title + '</h4><p class="text-muted">' + text + '</p></div>');
Rushabh Mehta3daa49a2014-10-21 16:16:30 +053014 },
15
16 bind_events: function() {
Rushabh Mehta3d766862015-09-16 18:52:52 +053017 shopping_cart.bind_address_select();
Rushabh Mehta8ffd4832015-09-17 16:28:30 +053018 shopping_cart.bind_place_order();
19 shopping_cart.bind_change_qty();
Kanchan Chauhana756e3f2016-06-22 15:51:42 +053020 shopping_cart.bind_dropdown_cart_buttons();
Rushabh Mehta3daa49a2014-10-21 16:16:30 +053021 },
Faris Ansariab74ca72017-05-30 12:54:42 +053022
Rushabh Mehta3d766862015-09-16 18:52:52 +053023 bind_address_select: function() {
24 $(".cart-addresses").find('input[data-address-name]').on("click", function() {
25 if($(this).prop("checked")) {
26 var me = this;
27
Robert Kirschner0a33d4f2017-03-21 14:52:59 +010028 // uncheck other shipping or billing addresses:
29 if ( $(this).is('input[data-fieldname=customer_address]') ) {
30 $('input[data-fieldname=customer_address]').not(this).prop('checked', false);
31 } else {
32 $('input[data-fieldname=shipping_address_name]').not(this).prop('checked', false);
33 }
34
Rushabh Mehta3d766862015-09-16 18:52:52 +053035 return frappe.call({
36 type: "POST",
37 method: "erpnext.shopping_cart.cart.update_cart_address",
Robert Kirschnerc6b52a32017-03-22 08:10:30 +010038 freeze: true,
Rushabh Mehta3d766862015-09-16 18:52:52 +053039 args: {
40 address_fieldname: $(this).attr("data-fieldname"),
41 address_name: $(this).attr("data-address-name")
42 },
43 callback: function(r) {
44 if(!r.exc) {
Rushabh Mehta72fbf902015-09-17 18:29:44 +053045 $(".cart-tax-items").html(r.message.taxes);
Rushabh Mehta3d766862015-09-16 18:52:52 +053046 }
47 }
48 });
49 } else {
50 return false;
51 }
52 });
53
54 },
55
Rushabh Mehta8ffd4832015-09-17 16:28:30 +053056 bind_place_order: function() {
57 $(".btn-place-order").on("click", function() {
58 shopping_cart.place_order(this);
Rushabh Mehta3daa49a2014-10-21 16:16:30 +053059 });
Rushabh Mehta3daa49a2014-10-21 16:16:30 +053060 },
61
Rushabh Mehta8ffd4832015-09-17 16:28:30 +053062 bind_change_qty: function() {
63 // bind update button
64 $(".cart-items").on("change", ".cart-qty", function() {
65 var item_code = $(this).attr("data-item-code");
Kanchan Chauhana756e3f2016-06-22 15:51:42 +053066 var newVal = $(this).val();
67 shopping_cart.shopping_cart_update(item_code, newVal);
Kanchan Chauhan239b3512016-05-02 11:43:44 +053068 });
Faris Ansariab74ca72017-05-30 12:54:42 +053069
70 $(".cart-items").on('click', '.number-spinner button', function () {
Kanchan Chauhanc8d47da2016-06-22 15:46:38 +053071 var btn = $(this),
Kanchan Chauhana756e3f2016-06-22 15:51:42 +053072 input = btn.closest('.number-spinner').find('input'),
73 oldValue = input.val().trim(),
Kanchan Chauhanc8d47da2016-06-22 15:46:38 +053074 newVal = 0;
Faris Ansariab74ca72017-05-30 12:54:42 +053075
Kanchan Chauhanc8d47da2016-06-22 15:46:38 +053076 if (btn.attr('data-dir') == 'up') {
Kanchan Chauhanc8d47da2016-06-22 15:46:38 +053077 newVal = parseInt(oldValue) + 1;
78 } else {
79 if (oldValue > 1) {
80 newVal = parseInt(oldValue) - 1;
81 }
82 }
Kanchan Chauhana756e3f2016-06-22 15:51:42 +053083 input.val(newVal);
Faris Ansariab74ca72017-05-30 12:54:42 +053084 var item_code = input.attr("data-item-code");
Kanchan Chauhana756e3f2016-06-22 15:51:42 +053085 shopping_cart.shopping_cart_update(item_code, newVal);
Kanchan Chauhanc8d47da2016-06-22 15:46:38 +053086 });
Kanchan Chauhan239b3512016-05-02 11:43:44 +053087 },
Faris Ansariab74ca72017-05-30 12:54:42 +053088
Rushabh Mehta3daa49a2014-10-21 16:16:30 +053089 render_tax_row: function($cart_taxes, doc, shipping_rules) {
90 var shipping_selector;
91 if(shipping_rules) {
92 shipping_selector = '<select class="form-control">' + $.map(shipping_rules, function(rule) {
Faris Ansariab74ca72017-05-30 12:54:42 +053093 return '<option value="' + rule[0] + '">' + rule[1] + '</option>' }).join("\n") +
94 '</select>';
Rushabh Mehta3daa49a2014-10-21 16:16:30 +053095 }
96
97 var $tax_row = $(repl('<div class="row">\
98 <div class="col-md-9 col-sm-9">\
99 <div class="row">\
100 <div class="col-md-9 col-md-offset-3">' +
101 (shipping_selector || '<p>%(description)s</p>') +
102 '</div>\
103 </div>\
104 </div>\
105 <div class="col-md-3 col-sm-3 text-right">\
106 <p' + (shipping_selector ? ' style="margin-top: 5px;"' : "") + '>%(formatted_tax_amount)s</p>\
107 </div>\
108 </div>', doc)).appendTo($cart_taxes);
109
110 if(shipping_selector) {
111 $tax_row.find('select option').each(function(i, opt) {
112 if($(opt).html() == doc.description) {
113 $(opt).attr("selected", "selected");
114 }
115 });
116 $tax_row.find('select').on("change", function() {
117 shopping_cart.apply_shipping_rule($(this).val(), this);
118 });
119 }
120 },
121
122 apply_shipping_rule: function(rule, btn) {
123 return frappe.call({
124 btn: btn,
125 type: "POST",
126 method: "erpnext.shopping_cart.cart.apply_shipping_rule",
127 args: { shipping_rule: rule },
128 callback: function(r) {
129 if(!r.exc) {
130 shopping_cart.render(r.message);
131 }
132 }
133 });
134 },
135
Rushabh Mehta3daa49a2014-10-21 16:16:30 +0530136 place_order: function(btn) {
137 return frappe.call({
138 type: "POST",
139 method: "erpnext.shopping_cart.cart.place_order",
140 btn: btn,
141 callback: function(r) {
142 if(r.exc) {
143 var msg = "";
144 if(r._server_messages) {
145 msg = JSON.parse(r._server_messages || []).join("<br>");
146 }
147
148 $("#cart-error")
149 .empty()
150 .html(msg || frappe._("Something went wrong!"))
151 .toggle(true);
152 } else {
Anand Doshida858cc2015-02-24 17:50:44 +0530153 window.location.href = "/orders/" + encodeURIComponent(r.message);
Rushabh Mehta3daa49a2014-10-21 16:16:30 +0530154 }
155 }
156 });
157 }
158});
159
Kanchan Chauhana756e3f2016-06-22 15:51:42 +0530160frappe.ready(function() {
Saurabh69f99752016-01-06 16:41:50 +0530161 $(".cart-icon").hide();
Rushabh Mehta3daa49a2014-10-21 16:16:30 +0530162 shopping_cart.bind_events();
Rushabh Mehta3daa49a2014-10-21 16:16:30 +0530163});
Kanchan Chauhanb3fe6a42016-03-16 18:01:22 +0530164
165function show_terms() {
Faris Ansariab74ca72017-05-30 12:54:42 +0530166 var html = $(".cart-terms").html();
167 frappe.msgprint(html);
Kanchan Chauhanb3fe6a42016-03-16 18:01:22 +0530168}