summaryrefslogtreecommitdiff
path: root/addons/sale_management/static
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/sale_management/static
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/sale_management/static')
-rw-r--r--addons/sale_management/static/description/icon.pngbin0 -> 9214 bytes
-rw-r--r--addons/sale_management/static/description/icon.svg1
-rw-r--r--addons/sale_management/static/src/img/Sales-configure-products.gifbin0 -> 13861 bytes
-rw-r--r--addons/sale_management/static/src/img/online_training.pngbin0 -> 11682 bytes
-rw-r--r--addons/sale_management/static/src/img/openerp_gold_partner.pngbin0 -> 23252 bytes
-rw-r--r--addons/sale_management/static/src/img/partner_icon_01.pngbin0 -> 25055 bytes
-rw-r--r--addons/sale_management/static/src/img/partner_icon_02.pngbin0 -> 14792 bytes
-rw-r--r--addons/sale_management/static/src/img/partner_icon_04.pngbin0 -> 17968 bytes
-rw-r--r--addons/sale_management/static/src/img/partner_sc_01.pngbin0 -> 51068 bytes
-rw-r--r--addons/sale_management/static/src/img/t-shirts.pngbin0 -> 13506 bytes
-rw-r--r--addons/sale_management/static/src/js/sale_management.js182
11 files changed, 183 insertions, 0 deletions
diff --git a/addons/sale_management/static/description/icon.png b/addons/sale_management/static/description/icon.png
new file mode 100644
index 00000000..343c9f7e
--- /dev/null
+++ b/addons/sale_management/static/description/icon.png
Binary files differ
diff --git a/addons/sale_management/static/description/icon.svg b/addons/sale_management/static/description/icon.svg
new file mode 100644
index 00000000..97a19c02
--- /dev/null
+++ b/addons/sale_management/static/description/icon.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="70" height="70" viewBox="0 0 70 70"><defs><path id="a" d="M4 0h61c4 0 5 1 5 5v60c0 4-1 5-5 5H4c-3 0-4-1-4-5V5c0-4 1-5 4-5z"/><linearGradient id="c" x1="100%" x2="0%" y1="0%" y2="100%"><stop offset="0%" stop-color="#DA956B"/><stop offset="100%" stop-color="#CC7039"/></linearGradient><path id="d" d="M56.243 52.279c.578 0 1.05.537 1.05 1.193v.978c0 .656-.472 1.194-1.05 1.194H13.532c-.578 0-1.05-.538-1.05-1.194v-35.8c0-.657.472-1.194 1.05-1.194h1.5c.578 0 1.05.537 1.05 1.194v33.629h40.161zM39 23.025l4.981 4.963-6.302 7.25-4.866-5.53c-.411-.467-1.068-.467-1.48 0L20.92 41.423a1.31 1.31 0 0 0-.018 1.68l2.494 2.924c.412.477 1.086.487 1.497.01l7.186-8.165 4.857 5.52a.965.965 0 0 0 1.488 0l9.558-10.86L53 37.664 55 20l-16 3.025z"/><path id="e" d="M56.243 50.279c.578 0 1.05.537 1.05 1.193v.978c0 .656-.472 1.194-1.05 1.194H13.532c-.578 0-1.05-.538-1.05-1.194v-35.8c0-.657.472-1.194 1.05-1.194h1.5c.578 0 1.05.537 1.05 1.194v33.629h40.161zM39 21.025l4.981 4.963-6.302 7.25-4.866-5.53c-.411-.467-1.068-.467-1.48 0L20.92 39.423a1.31 1.31 0 0 0-.018 1.68l2.494 2.924c.412.477 1.086.487 1.497.01l7.186-8.165 4.857 5.52a.965.965 0 0 0 1.488 0l9.558-10.86L53 35.664 55 18l-16 3.025z"/></defs><g fill="none" fill-rule="evenodd"><mask id="b" fill="#fff"><use xlink:href="#a"/></mask><g mask="url(#b)"><path fill="url(#c)" d="M0 0H70V70H0z"/><path fill="#FFF" fill-opacity=".383" d="M4 1h61c2.667 0 4.333.667 5 2V0H0v3c.667-1.333 2-2 4-2z"/><path fill="#393939" d="M45.243 69H4c-2 0-4-.146-4-4.077V35.315L13 16h3v26.5l15-14.27.974.024L40 21.096l13 14.27-18 18.346h22L45.243 69z" opacity=".324"/><path fill="#000" fill-opacity=".383" d="M4 69h61c2.667 0 4.333-1 5-3v4H0v-4c.667 2 2 3 4 3z"/><use fill="#000" fill-rule="nonzero" opacity=".3" xlink:href="#d"/><use fill="#FFF" fill-rule="nonzero" xlink:href="#e"/></g></g></svg> \ No newline at end of file
diff --git a/addons/sale_management/static/src/img/Sales-configure-products.gif b/addons/sale_management/static/src/img/Sales-configure-products.gif
new file mode 100644
index 00000000..e70c4a92
--- /dev/null
+++ b/addons/sale_management/static/src/img/Sales-configure-products.gif
Binary files differ
diff --git a/addons/sale_management/static/src/img/online_training.png b/addons/sale_management/static/src/img/online_training.png
new file mode 100644
index 00000000..cc03d0d7
--- /dev/null
+++ b/addons/sale_management/static/src/img/online_training.png
Binary files differ
diff --git a/addons/sale_management/static/src/img/openerp_gold_partner.png b/addons/sale_management/static/src/img/openerp_gold_partner.png
new file mode 100644
index 00000000..f0404e8c
--- /dev/null
+++ b/addons/sale_management/static/src/img/openerp_gold_partner.png
Binary files differ
diff --git a/addons/sale_management/static/src/img/partner_icon_01.png b/addons/sale_management/static/src/img/partner_icon_01.png
new file mode 100644
index 00000000..880752e3
--- /dev/null
+++ b/addons/sale_management/static/src/img/partner_icon_01.png
Binary files differ
diff --git a/addons/sale_management/static/src/img/partner_icon_02.png b/addons/sale_management/static/src/img/partner_icon_02.png
new file mode 100644
index 00000000..c3b76637
--- /dev/null
+++ b/addons/sale_management/static/src/img/partner_icon_02.png
Binary files differ
diff --git a/addons/sale_management/static/src/img/partner_icon_04.png b/addons/sale_management/static/src/img/partner_icon_04.png
new file mode 100644
index 00000000..a1c2193a
--- /dev/null
+++ b/addons/sale_management/static/src/img/partner_icon_04.png
Binary files differ
diff --git a/addons/sale_management/static/src/img/partner_sc_01.png b/addons/sale_management/static/src/img/partner_sc_01.png
new file mode 100644
index 00000000..2b4872a2
--- /dev/null
+++ b/addons/sale_management/static/src/img/partner_sc_01.png
Binary files differ
diff --git a/addons/sale_management/static/src/img/t-shirts.png b/addons/sale_management/static/src/img/t-shirts.png
new file mode 100644
index 00000000..31bd6a4c
--- /dev/null
+++ b/addons/sale_management/static/src/img/t-shirts.png
Binary files differ
diff --git a/addons/sale_management/static/src/js/sale_management.js b/addons/sale_management/static/src/js/sale_management.js
new file mode 100644
index 00000000..eaa126cc
--- /dev/null
+++ b/addons/sale_management/static/src/js/sale_management.js
@@ -0,0 +1,182 @@
+odoo.define('sale_management.sale_management', function (require) {
+'use strict';
+
+var publicWidget = require('web.public.widget');
+
+publicWidget.registry.SaleUpdateLineButton = publicWidget.Widget.extend({
+ selector: '.o_portal_sale_sidebar',
+ events: {
+ 'click a.js_update_line_json': '_onClick',
+ 'click a.js_add_optional_products': '_onClickOptionalProduct',
+ 'change .js_quantity': '_onChangeQuantity'
+ },
+ /**
+ * @override
+ */
+ async start() {
+ await this._super(...arguments);
+ this.orderDetail = this.$el.find('table#sales_order_table').data();
+ this.elems = this._getUpdatableElements();
+ },
+ /**
+ * Process the change in line quantity
+ *
+ * @private
+ * @param {Event} ev
+ */
+ _onChangeQuantity(ev) {
+ ev.preventDefault();
+ let self = this,
+ $target = $(ev.currentTarget),
+ quantity = parseInt($target.val());
+
+ this._callUpdateLineRoute(self.orderDetail.orderId, {
+ 'line_id': $target.data('lineId'),
+ 'input_quantity': quantity >= 0 ? quantity : false,
+ 'access_token': self.orderDetail.token
+ }).then((data) => {
+ self._updateOrderLineValues($target.closest('tr'), data);
+ self._updateOrderValues(data);
+ });
+ },
+ /**
+ * Reacts to the click on the -/+ buttons
+ *
+ * @param {Event} ev
+ */
+ _onClick(ev) {
+ ev.preventDefault();
+ let self = this,
+ $target = $(ev.currentTarget);
+ this._callUpdateLineRoute(self.orderDetail.orderId, {
+ 'line_id': $target.data('lineId'),
+ 'remove': $target.data('remove'),
+ 'unlink': $target.data('unlink'),
+ 'access_token': self.orderDetail.token
+ }).then((data) => {
+ var $saleTemplate = $(data['sale_template']);
+ if ($saleTemplate.length && data['unlink']) {
+ self.$('#portal_sale_content').html($saleTemplate);
+ self.elems = self._getUpdatableElements();
+ }
+ self._updateOrderLineValues($target.closest('tr'), data);
+ self._updateOrderValues(data);
+ });
+ },
+ /**
+ * trigger when optional product added to order from portal.
+ *
+ * @private
+ * @param {Event} ev
+ */
+ _onClickOptionalProduct(ev) {
+ ev.preventDefault();
+ let self = this,
+ $target = $(ev.currentTarget);
+ // to avoid double click on link with href.
+ $target.css('pointer-events', 'none');
+
+ this._rpc({
+ route: "/my/orders/" + self.orderDetail.orderId + "/add_option/" + $target.data('optionId'),
+ params: {access_token: self.orderDetail.token}
+ }).then((data) => {
+ if (data) {
+ self.$('#portal_sale_content').html($(data['sale_template']));
+ self.elems = self._getUpdatableElements();
+ self._updateOrderValues(data);
+ }
+ });
+ },
+ /**
+ * Calls the route to get updated values of the line and order
+ * when the quantity of a product has changed
+ *
+ * @private
+ * @param {integer} order_id
+ * @param {Object} params
+ * @return {Deferred}
+ */
+ _callUpdateLineRoute(order_id, params) {
+ return this._rpc({
+ route: "/my/orders/" + order_id + "/update_line_dict",
+ params: params,
+ });
+ },
+ /**
+ * Processes data from the server to update the orderline UI
+ *
+ * @private
+ * @param {Element} $orderLine: orderline element to update
+ * @param {Object} data: contains order and line updated values
+ */
+ _updateOrderLineValues($orderLine, data) {
+ let linePriceTotal = data.order_line_price_total,
+ linePriceSubTotal = data.order_line_price_subtotal,
+ $linePriceTotal = $orderLine.find('.oe_order_line_price_total .oe_currency_value'),
+ $linePriceSubTotal = $orderLine.find('.oe_order_line_price_subtotal .oe_currency_value');
+
+ if (!$linePriceTotal.length && !$linePriceSubTotal.length) {
+ $linePriceTotal = $linePriceSubTotal = $orderLine.find('.oe_currency_value').last();
+ }
+
+ $orderLine.find('.js_quantity').val(data.order_line_product_uom_qty);
+ if ($linePriceTotal.length && linePriceTotal !== undefined) {
+ $linePriceTotal.text(linePriceTotal);
+ }
+ if ($linePriceSubTotal.length && linePriceSubTotal !== undefined) {
+ $linePriceSubTotal.text(linePriceSubTotal);
+ }
+ },
+ /**
+ * Processes data from the server to update the UI
+ *
+ * @private
+ * @param {Object} data: contains order and line updated values
+ */
+ _updateOrderValues(data) {
+ let orderAmountTotal = data.order_amount_total,
+ orderAmountUntaxed = data.order_amount_untaxed,
+ orderAmountUndiscounted = data.order_amount_undiscounted,
+ $orderTotalsTable = $(data.order_totals_table);
+ if (orderAmountUntaxed !== undefined) {
+ this.elems.$orderAmountUntaxed.text(orderAmountUntaxed);
+ }
+
+ if (orderAmountTotal !== undefined) {
+ this.elems.$orderAmountTotal.text(orderAmountTotal);
+ }
+
+ if (orderAmountUndiscounted !== undefined) {
+ this.elems.$orderAmountUndiscounted.text(orderAmountUndiscounted);
+ }
+ if ($orderTotalsTable.length) {
+ this.elems.$orderTotalsTable.find('table').replaceWith($orderTotalsTable);
+ }
+ },
+ /**
+ * Locate in the DOM the elements to update
+ * Mostly for compatibility, when the module has not been upgraded
+ * In that case, we need to fall back to some other elements
+ *
+ * @private
+ * @return {Object}: Jquery elements to update
+ */
+ _getUpdatableElements() {
+ let $orderAmountUntaxed = $('[data-id="total_untaxed"]').find('span, b'),
+ $orderAmountTotal = $('[data-id="total_amount"]').find('span, b'),
+ $orderAmountUndiscounted = $('[data-id="amount_undiscounted"]').find('span, b');
+
+ if (!$orderAmountUntaxed.length) {
+ $orderAmountUntaxed = $orderAmountTotal.eq(1);
+ $orderAmountTotal = $orderAmountTotal.eq(0).add($orderAmountTotal.eq(2));
+ }
+
+ return {
+ $orderAmountUntaxed: $orderAmountUntaxed,
+ $orderAmountTotal: $orderAmountTotal,
+ $orderTotalsTable: $('#total'),
+ $orderAmountUndiscounted: $orderAmountUndiscounted,
+ };
+ }
+});
+});