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
    • E-learning
    Bevoorradingsketen
    • Voorraad
    • Productie
    • PLM
    • Inkoop
    • Onderhoud
    • Kwaliteit
    Personeelsbeheer
    • Werknemers
    • Werving & Selectie
    • Verlof
    • Evaluaties
    • Aanbevelingen
    • Wagenpark
    Marketing
    • Sociale media-marketing
    • E-mailmarketing
    • Sms-marketing
    • Evenementen
    • Marketingautomatisering
    • Enquêtes
    Diensten
    • Project
    • Urenstaten
    • Buitendienst
    • Helpdesk
    • Planning
    • Afspraken
    Productiviteit
    • Chat
    • Artificiële Intelligentie
    • IoT
    • VoIP
    • Kennis
    • WhatsApp
    Apps van derden Odoo Studio Odoo Cloud Platform
  • Bedrijfstakken
    Detailhandel
    • Boekhandel
    • kledingwinkel
    • Meubelwinkel
    • Supermarkt
    • Bouwmarkt
    • Speelgoedwinkel
    Horeca & Hospitality
    • Bar en café
    • Restaurant
    • Fastfood
    • Gastenverblijf
    • Drankenhandelaar
    • Hotel
    Vastgoed
    • Makelaarskantoor
    • Architectenbureau
    • Bouw
    • Vastgoedbeheer
    • Tuinieren
    • Vereniging van mede-eigenaren
    Consulting
    • Accountantskantoor
    • Odoo Partner
    • Marketingbureau
    • Advocatenkantoor
    • Talentenwerving
    • Audit & Certificering
    Productie
    • Textiel
    • Metaal
    • Meubels
    • Eten
    • Brouwerij
    • Relatiegeschenken
    Gezondheid & Fitness
    • Sportclub
    • Opticien
    • Fitnesscentrum
    • Wellness-medewerkers
    • Apotheek
    • Kapper
    Diensten
    • Klusjesman
    • IT-hardware & ondersteuning
    • Zonne-energiesystemen
    • Schoenmaker
    • Schoonmaakdiensten
    • HVAC-diensten
    Andere
    • Non-profitorganisatie
    • Milieuagentschap
    • Verhuur van Billboards
    • Fotograaf
    • Fietsleasing
    • Softwareverkoper
    Alle bedrijfstakken bekijken
  • Community
    Leren
    • Tutorials
    • Documentatie
    • Certificeringen
    • Training
    • Blog
    • Podcast
    Versterk het onderwijs
    • Onderwijsprogramma
    • Scale Up! Business Game
    • Odoo bezoeken
    Download de Software
    • Downloaden
    • Vergelijk edities
    • Releases
    Werk samen
    • Github
    • Forum
    • Evenementen
    • Vertalingen
    • Partner worden
    • Diensten voor 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
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

How to prevent from adding same products in sale order line

Inschrijven

Ontvang een bericht wanneer er activiteit is op deze post

Deze vraag is gerapporteerd
odooodoo12Odoo13.0
1 Beantwoorden
8107 Weergaven
Avatar
Madara

hi all iam a newbie to odoo , what iam trying to achieve is i want to prevent from adding duplicate products in order line , if the same exits already we should not able to add the duplicate product 


    @ api.multi

    @ api.constrains ('order_line')

    def _check_exist_product_in_line (self):

      for rec in self:

          product_id = self.env ['product.product']. search ([('default_code', '=', 'MIFFLIN')])

          for line in self.order_line:

             if line.product_id.id in product_id:

                raise ValidationError (_ ('Product already added.'))

             product_id.append (line.product_id.id)



i tried like this but it's not working its throwing operation not permitted. what am i missing here , someone help me here

0
Avatar
Annuleer
Madara
Auteur

TypeError: Mixing apples and oranges: product.product(28,) in sale.order.line(572,)

Avatar
Mohamed Lamine Lalmi
Beste antwoord

Hello Mascherano,

Comparing what you want to achieve with what your code does seem like two different things to me.

I feel your code will solve your situation, you can just fix it like the following:

  1. Please do not use @api.multi & @api.constrains on the same function

  2. the result of self.env ['product.product']. search ([('default_code', '=', 'MIFFLIN')]) is product.product object set and not an integer and you are trying to compare this set of objects with an integer on if line.product_id.id in product_id (line.product_id.id is an integer value) ==> This throws the error: TypeError: Mixing apples and oranges

  3. Bellow is the fix of your code:

@api.constrains ('order_line')
def _check_exist_product_in_line(self):
product_ids = self.env['product.product'].search([('default_code', '=', 'MIFFLIN')])
for rec in self:
for line in rec.order_line:
if line.product_id in product_ids:
raise ValidationError(_('Product already added.'))
product_id.append(line.product_id.id)
    return True

Let me explain a little bit what's your code is for:

  1. Get all the products that has 'MIFFLIN' as a default code.

  2. You loop on the Sale order lines

  3. If the line's product is one of the products searched on step 1 then raise an error.

  4. So your code will always raise an error if 'MIFFLIN' product is present on sale order lines even that is not duplicated (exist only once).

Honestly, i don't believe your code will help you to achieve your explained goal, If you feel the same, please to use the bellow code:

@api.constrains ('order_line')
def _check_exist_product_in_line(self):
for order in self:
products_in_lines = order.mapped('order_line.product_id')
for product in products_in_lines:
lines_count = len(order.order_line.filtered(lambda line: line.product_id == product))
if lines_count > 1:
raise ValidationError(_('Product already added.'))
return True

Hope this will help,

Good luck.

0
Avatar
Annuleer
Madara
Auteur

when i try to add the product , it showing as error product_id is not defined

Cybat

product_ids = []
for line in self.order_line:
product_ids.append (line.product_id.id)
occurrences = product_ids.count (self.product_id.id)
if occurrences> 2:
raise ValidationError ('You cannot select already added product.' )

Cybat

Onchange product_id

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
Can I use select ="multi" with selection field in search panel tag in sale order tree view?
odoo odoo12 Odoo13.0
Avatar
Avatar
1
jun. 23
6549
Odoo Installation Script Opgelost
odoo odoo12 Odoo13.0 v14
Avatar
Avatar
Avatar
Avatar
4
dec. 24
21574
how to particular Sales Order delivery note states using for loop
python odoo odoo12 Odoo13.0
Avatar
0
okt. 21
4217
Odoo error to 13 from 12
migration odoo odoo12 Odoo13.0
Avatar
2
jan. 20
4469
psycopg2.ProgrammingError: no existe la relación «_unknown» Please HELP!!!!
odoo odoo12
Avatar
Avatar
2
nov. 25
2337
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
  • Partner worden
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 Svenska ภาษาไทย 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