Overslaan naar inhoud
Odoo Menu
  • Aanmelden
  • Probeer het gratis
  • Apps
    Financiën
    • Boekhouding
    • Facturatie
    • Onkosten
    • Spreadsheet (BI)
    • Documenten
    • Ondertekenen
    Verkoop
    • CRM
    • Verkoop
    • Kassasysteem winkel
    • Kassasysteem Restaurant
    • Abonnementen
    • Verhuur
    Websites
    • Websitebouwer
    • E-commerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Bevoorradingsketen
    • Voorraad
    • Productie
    • PLM
    • Inkoop
    • Onderhoud
    • Kwaliteit
    Personeelsbeheer
    • Werknemers
    • Werving & Selectie
    • Verlof
    • Evaluaties
    • Aanbevelingen
    • Wagenpark
    Marketing
    • Social media Marketing
    • E-mailmarketing
    • SMS Marketing
    • Evenementen
    • Marketingautomatisering
    • Enquêtes
    Diensten
    • Project
    • Urenstaten
    • Buitendienst
    • Helpdesk
    • Planning
    • Afspraken
    Productiviteit
    • Chat
    • Goedkeuringen
    • IoT
    • VoIP
    • Kennis
    • WhatsApp
    Apps van derden Odoo Studio Odoo Cloud Platform
  • Bedrijfstakken
    Detailhandel
    • Boekhandel
    • kledingwinkel
    • Meubelzaak
    • Supermarkt
    • Bouwmarkt
    • Speelgoedwinkel
    Food & Hospitality
    • Bar en Pub
    • Restaurant
    • Fastfood
    • Gastenverblijf
    • Drankenhandelaar
    • Hotel
    Vastgoed
    • Makelaarskantoor
    • Architectenbureau
    • Bouw
    • Vastgoedbeheer
    • Tuinieren
    • Vereniging van eigenaren
    Consulting
    • Accountantskantoor
    • Odoo Partner
    • Marketingbureau
    • Advocatenkantoor
    • Talentenwerving
    • Audit & Certificering
    Productie
    • Textiel
    • Metaal
    • Meubels
    • Eten
    • Brewery
    • Relatiegeschenken
    Gezondheid & Fitness
    • Sportclub
    • Opticien
    • Fitnesscentrum
    • Wellness-medewerkers
    • Apotheek
    • Kapper
    Trades
    • Klusjesman
    • IT-hardware & support
    • Zonne-energiesystemen
    • Schoenmaker
    • Schoonmaakdiensten
    • HVAC-diensten
    Andere
    • Non-profitorganisatie
    • Milieuagentschap
    • Verhuur van Billboards
    • Fotograaf
    • Fietsleasing
    • Softwareverkoper
    Browse all Industries
  • Community
    Leren
    • Tutorials
    • Documentatie
    • Certificeringen
    • Training
    • Blog
    • Podcast
    Versterk het onderwijs
    • Onderwijs- programma
    • Scale Up! Business Game
    • Bezoek Odoo
    Download de Software
    • Downloaden
    • Vergelijk edities
    • Releases
    Werk samen
    • Github
    • Forum
    • Evenementen
    • Vertalingen
    • Word een Partner
    • Services for Partners
    • Registreer je accountantskantoor
    Diensten
    • Vind een partner
    • Vind een boekhouder
    • Een adviseur ontmoeten
    • Implementatiediensten
    • Klantreferenties
    • Ondersteuning
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Vraag een demo aan
  • Prijzen
  • Help

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

  • CRM
  • e-Commerce
  • Boekhouding
  • Voorraad
  • PoS
  • Project
  • MRP
All apps
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Alle posts Personen Badges
Labels (Bekijk alle)
odoo accounting v14 pos v15
Over dit forum
Je moet geregistreerd zijn om te kunnen communiceren met de community.
Alle posts Personen Badges
Labels (Bekijk alle)
odoo accounting v14 pos v15
Over dit forum
Help

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

Inschrijven

Ontvang een bericht wanneer er activiteit is op deze post

Deze vraag is gerapporteerd
javascriptinheritjsodooowl
1 Beantwoorden
4163 Weergaven
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
Annuleer
Ragab Deaf
Auteur

/** @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
Beste antwoord

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
Annuleer
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);

```

Geniet je van het gesprek? Blijf niet alleen lezen, doe ook mee!

Maak vandaag nog een account aan om te profiteren van exclusieve functies en deel uit te maken van onze geweldige community!

Aanmelden
Gerelateerde posts Antwoorden Weergaven Activiteit
OWL : TypeError: this is undefined - ODOO 16 CE Opgelost
javascript odoo owl
Avatar
Avatar
1
sep. 23
6101
Javascript "arguments" Where are they being generated? where do they come from?
javascript js odoo
Avatar
0
jul. 17
3689
How to extend or inherit a javascript object (instance.web.DateTimeWidget) from a custom module.
javascript js odoo
Avatar
0
mrt. 15
7601
odoo 17 js pos_discount extend apply_discount function
javascript js odoo v17
Avatar
Avatar
1
aug. 25
3016
Odoo 16 - The following error occurred in onWillStart: "Cannot read properties of undefined (reading 'display_name')"
javascript js owl odoo16
Avatar
0
apr. 25
2347
Community
  • Tutorials
  • Documentatie
  • Forum
Open Source
  • Downloaden
  • Github
  • Runbot
  • Vertalingen
Diensten
  • Odoo.sh Hosting
  • Ondersteuning
  • Upgrade
  • Gepersonaliseerde ontwikkelingen
  • Onderwijs
  • Vind een boekhouder
  • Vind een partner
  • Word een Partner
Over ons
  • Ons bedrijf
  • Merkelementen
  • Neem contact met ons op
  • Vacatures
  • Evenementen
  • Podcast
  • Blog
  • Klanten
  • Juridisch • Privacy
  • Beveiliging
الْعَرَبيّة 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 is een suite van open source zakelijke apps die aan al je bedrijfsbehoeften voldoet: CRM, E-commerce, boekhouding, inventaris, kassasysteem, projectbeheer, enz.

Odoo's unieke waardepropositie is om tegelijkertijd zeer gebruiksvriendelijk en volledig geïntegreerd te zijn.

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