Skip to Content
Odoo मेन्यू
  • Sign in
  • मुफ़्त में आज़माएं
  • ऐप्लिकेशन
    फ़ाइनेंस
    • अकाउंटिंग
    • इनवॉइसिंग
    • एक्सपेंस
    • स्प्रेडशीट (बीआई)
    • डॉक्यूमेंट्स
    • साइन
    सेल्स
    • सीआरएम
    • सेल्स
    • पीओएस शॉप
    • पीओएस रेस्टोरेंट
    • सब्सक्रिप्शन
    • रेंटल
    वेबसाइट
    • वेबसाइट बिल्डर
    • ई-कॉमर्स
    • ब्लॉग
    • फ़ोरम
    • लाइव चैट
    • ई-लर्निंग
    सप्लाई चेन
    • इन्वेंट्री
    • मैन्युफ़ैक्चरिंग
    • पीएलएम
    • परचेज़
    • मेंटेनेंस
    • क्वालिटी
    मानव संसाधन
    • कर्मचारी
    • रिक्रूटमेंट
    • टाइम ऑफ़
    • अप्रेज़ल
    • रेफ़रल
    • फ़्लीट
    मार्केटिंग
    • सोशल मार्केटिंग
    • ईमेल मार्केटिंग
    • एसएमएस मार्केटिंग
    • इवेंट
    • मार्केटिंग ऑटोमेशन
    • सर्वे
    सेवाएं
    • प्रोजेक्ट
    • टाइमशीट
    • फ़ील्ड सर्विस
    • हेल्पडेस्क
    • प्लानिंग
    • अपॉइंटमेंट
    प्रॉडक्टिविटी
    • डिस्कस
    • अप्रूवल
    • आईओटी
    • वीओआईपी
    • नॉलेज
    • WhatsApp
    तीसरे पक्ष के ऐप्लिकेशन Odoo स्टूडियो Odoo क्लाउड प्लेटफ़ॉर्म
  • इंडस्ट्री
    रीटेल
    • बुक स्टोर
    • क्लोदिंग स्टोर
    • फ़र्नीचर स्टोर
    • ग्रॉसरी स्टोर
    • हार्डवेयर स्टोर
    • टॉय स्टोर
    Food & Hospitality
    • बार और पब
    • रेस्टोरेंट
    • फ़ास्ट फ़ूड
    • Guest House
    • बेवरिज डिस्ट्रीब्यूटर
    • होटल
    रियल एस्टेट
    • Real Estate Agency
    • आर्किटेक्चर फ़र्म
    • कंसट्रक्शन
    • एस्टेट मैनेजमेंट
    • गार्ड्निंग
    • प्रॉपर्टी ओनर असोसिएशन
    कंसल्टिंग
    • अकाउंटिंग फ़र्म
    • Odoo पार्टनर
    • मार्केटिंग एजेंसी
    • लॉ फ़र्म
    • टैलेंट ऐक्विज़िशन
    • ऑडिट & सर्टिफ़िकेशन
    मैन्युफ़ैक्चरिंग
    • टेक्सटाइल
    • Metal
    • फ़र्नीचर
    • फ़ूड
    • Brewery
    • कॉर्पोरेट गिफ़्ट
    हेल्थ & फिटनेस
    • स्पोर्ट्स क्लब
    • आईवियर स्टोर
    • फिटनेस सेंटर
    • वेलनेस प्रैक्टिशनर
    • फॉर्मेसी
    • हेयर सैलून
    Trades
    • Handyman
    • आईटी हॉर्डवेयर और सपोर्ट
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    अन्य
    • Nonprofit Organization
    • एन्वायरमेंटल एजेंसी
    • बिलबोर्ड रेंटल
    • फ़ोटोग्राफी
    • बाइक लीजिंग
    • सॉफ़्टवेयर रीसेलर
    Browse all Industries
  • कम्यूनिटी
    सीखें
    • ट्यूटोरियल्स
    • दस्तावेज़
    • सर्टिफ़िकेशन
    • ट्रेनिंग
    • ब्लॉग
    • पॉडकास्ट
    शिक्षा को बढ़ावा दें
    • एजुकेशन प्रोग्राम
    • स्केल अप! बिजनेस गेम
    • Odoo के ऑफ़िस में आएं
    सॉफ़्टवेयर पाएं
    • डाउनलोड
    • वर्शन की तुलना करें
    • रिलीज़
    साथ मिलकर काम करें
    • Github
    • फ़ोरम
    • इवेंट
    • अनुवाद
    • पार्टनर बनें
    • Services for Partners
    • अपना अकाउंटिंग फ़र्म रजिस्टर करें
    सेवाएं पाएं
    • पार्टनर ढूंढें
    • अकाउंटेंट खोजें
    • सलाहकार की मदद लें
    • इम्प्लिमेंटेशन सेवाएं
    • कस्टमर रेफ़रेंस
    • सहायता
    • अपग्रेड
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    डेमो देखें
  • कीमत
  • सहायता

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • सीआरएम
  • e-Commerce
  • लेखांकन
  • इन्वेंटरी
  • PoS
  • प्रोजेक्ट
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
टैग (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
टैग (View all)
odoo accounting v14 pos v15
About this forum
Help

in odoo 17 i want to inherit pos_discount apply_discount function, i tried more an more

Subscribe

Get notified when there's activity on this post

This question has been flagged
javascriptinheritjsodooowl
1 Reply
4114 Views
Avatar
Ragab Deaf

this is the original code :

/** @odoo-module **/

import { _t } from "@web/core/l10n/translation";
import { ProductScreen } from "@point_of_sale/app/screens/product_screen/product_screen";
import { useService } from "@web/core/utils/hooks";
import { NumberPopup } from "@point_of_sale/app/utils/input_popups/number_popup";
import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup";
import { Component } from "@odoo/owl";
import { usePos } from "@point_of_sale/app/store/pos_hook";

export class DiscountButton extends Component {
static template = "pos_discount.DiscountButton";

setup() {
this.pos = usePos();
this.popup = useService("popup");
}
async click() {
var self = this;
const { confirmed, payload } = await this.popup.add(NumberPopup, {
title: _t("Discount Percentage"),
startingValue: this.pos.config.discount_pc,
isInputSelected: true,
});
if (confirmed) {
const val = Math.max(0, Math.min(100, parseFloat(payload)));
await self.apply_discount(val);
}
}

async apply_discount(pc) {
// here i want to add som validation
}
}

ProductScreen.addControlButton({
component: DiscountButton,
condition: function () {
const { module_pos_discount, discount_product_id } = this.pos.config;
return module_pos_discount && discount_product_id;
},
});



and this is my code 

/** @odoo-module **/

const _t = require("@web/core/l10n/translation")._t;
const ProductScreen = require("@point_of_sale/app/screens/product_screen/product_screen").ProductScreen;
const NumberPopup = require("@point_of_sale/app/utils/input_popups/number_popup").NumberPopup;
const ErrorPopup = require("@point_of_sale/app/errors/popups/error_popup").ErrorPopup;
const Component = require("@odoo/owl").Component;
const usePos = require("@point_of_sale/app/store/pos_hook").usePos;
const DiscountButton = require("@pos_discount/overrides/components/discount_button/discount_button").DiscountButton;

export class CustomDiscountButton extends DiscountButton {
async apply_discount(pc) {

console.log('some validation');

await super.apply_discount(pc);


}

async click() {
var self = this;
const { confirmed, payload } = await this.popup.add(NumberPopup, {
title: _t("Discount Percentage"),
startingValue: this.pos.config.discount_pc,
isInputSelected: true,
});
if (confirmed) {
const val = Math.max(0, Math.min(100, parseFloat(payload)));
await self.apply_discount(val);
}
}
}

ProductScreen.addControlButton({
component: CustomDiscountButton,
condition: function () {
const { module_pos_discount, discount_product_id } = this.pos.config;
return module_pos_discount && discount_product_id;
},
});

 

0
Avatar
Discard
Ragab Deaf
Author

/** @odoo-module */

import { DiscountButton } from "@pos_discount/overrides/components/discount_button/discount_button";
import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup";
import { patch } from "@web/core/utils/patch";
import { _t } from "@web/core/l10n/translation";

patch(DiscountButton.prototype, {

async apply_discount(pc) {
console.log("test")
await super.apply_discount(arguments);
},
});

should this code work ?

Avatar
Cybrosys Techno Solutions Pvt.Ltd
Best Answer

Hi,

Try this:

/** @odoo-module **/


import { DiscountButton } from "@pos_discount/overrides/components/discount_button/discount_button";

import { patch } from "@web/core/utils/patch";


patch(DiscountButton.prototype, {

    setup() {

        super.setup(...arguments);

    },

       async apply_discount(pc) {

                       await super.apply_discount(pc);

       }

});


Hope it helps

1
Avatar
Discard
Syed Hamza

That works. But I was trying to import it like this and it was throwing errors "unmet dependencies". Why it is not working like this?
```
/** @odoo-module **/

import { registry } from "@web/core/registry";
import { DiscountButton } from "pos_discount/overrides/components/discount_button/discount_button"; // Correct path

// Create a new class that extends the original DiscountButton
export class CustomDiscountButton extends OriginalDiscountButton {
// Override the click method
async click() {
console.log("Custom click function invoked!");

const { confirmed, payload } = await this.popup.add(NumberPopup, {
title: _t("Discount Amount"),
startingValue: 0,
isInputSelected: true,
});
if (confirmed) {
const val = Math.max(0, parseFloat(payload));
await this.apply_discount(val);
}
}
}

// Register your custom button to replace the original one
registry.category("control_buttons").add("DiscountButton", CustomDiscountButton);

```

Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Sign up
Related Posts Replies Views Activity
OWL : TypeError: this is undefined - ODOO 16 CE Solved
javascript odoo owl
Avatar
Avatar
1
सित॰ 23
6062
Javascript "arguments" Where are they being generated? where do they come from?
javascript js odoo
Avatar
0
जुल॰ 17
3680
How to extend or inherit a javascript object (instance.web.DateTimeWidget) from a custom module.
javascript js odoo
Avatar
0
मार्च 15
7576
odoo 17 js pos_discount extend apply_discount function
javascript js odoo v17
Avatar
Avatar
1
अग॰ 25
2982
Odoo 16 - The following error occurred in onWillStart: "Cannot read properties of undefined (reading 'display_name')"
javascript js owl odoo16
Avatar
0
अप्रैल 25
2332
कम्यूनिटी
  • ट्यूटोरियल्स
  • दस्तावेज़
  • फ़ोरम
ओपन सोर्स
  • डाउनलोड
  • Github
  • रनबॉट
  • अनुवाद
सेवाएं
  • Odoo.sh Hosting
  • सहायता
  • अपग्रेड
  • कस्टम डेवलपमेंट्स
  • शिक्षा
  • अकाउंटेंट खोजें
  • पार्टनर ढूंढें
  • पार्टनर बनें
हमारे बारे में
  • हमारी कंपनी
  • ब्रांड ऐसेट
  • संपर्क करें
  • नौकरियां
  • इवेंट
  • पॉडकास्ट
  • ब्लॉग
  • ग्राहक
  • लीगल • गोपनीयता
  • सुरक्षा
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo, बिज़नेस से जुड़े ऐप्लिकेशन का एक कलेक्शन है जो ओपन सोर्स पर आधारित है. इसमें आपकी कंपनी की हर ज़रूरत के लिए ऐप्लिकेशन हैं. जैसे, सीआरएम, ई-कॉमर्स, अकाउंटिंग, इन्वेंट्री, पॉइंट ऑफ़ सेल, प्रोजेक्ट मैनेजमेंट वगैरह.

Odoo की सबसे बड़ी खासियत है कि यह इस्तेमाल करने में बहुत आसान है और यह पूरी तरह से इंटिग्रेट किया हुआ है.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now