Se rendre au contenu
Odoo Menu
  • Se connecter
  • Essai gratuit
  • Applications
    Finance
    • Comptabilité
    • Facturation
    • Notes de frais
    • Feuilles de calcul (BI)
    • Documents
    • Signature
    Ventes
    • CRM
    • Ventes
    • PdV Boutique
    • PdV Restaurant
    • Abonnements
    • Location
    Sites web
    • Site Web
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Chaîne d'approvisionnement
    • Inventaire
    • Fabrication
    • PLM
    • Achats
    • Maintenance
    • Qualité
    Ressources Humaines
    • Employés
    • Recrutement
    • Congés
    • Évaluations
    • Recommandations
    • Parc automobile
    Marketing
    • Marketing Social
    • E-mail Marketing
    • SMS Marketing
    • Événements
    • Marketing Automation
    • Sondages
    Services
    • Projet
    • Feuilles de temps
    • Services sur Site
    • Assistance
    • Planification
    • Rendez-vous
    Productivité
    • Discussion
    • Artificial Intelligence
    • Internet des Objets
    • VoIP
    • Connaissances
    • WhatsApp
    Applications tierces Odoo Studio Plateforme Cloud d'Odoo
  • Industries
    Commerce de détail
    • Librairie
    • Magasin de vêtements
    • Magasin de meubles
    • Supermarché
    • Quincaillerie
    • Magasin de jouets
    Restauration & Hôtellerie
    • Bar et Pub
    • Restaurant
    • Fast-food
    • Maison d’hôtes
    • Distributeur de boissons
    • Hôtel
    Immobilier
    • Agence immobilière
    • Cabinet d'architecture
    • Construction
    • Gestion immobilière
    • Jardinage
    • Association de copropriétaires
    Consultance
    • Cabinet d'expertise comptable
    • Partenaire Odoo
    • Agence Marketing
    • Cabinet d'avocats
    • Aquisition de talents
    • Audit & Certification
    Fabrication
    • Textile
    • Métal
    • Meubles
    • Alimentation
    • Brasserie
    • Cadeaux d'entreprise
    Santé & Fitness
    • Club de sports
    • Opticien
    • Salle de fitness
    • Praticiens bien-être
    • Pharmacie
    • Salon de coiffure
    Commerce
    • Homme à tout faire
    • Matériel informatique & support
    • Systèmes photovoltaïques
    • Cordonnier
    • Services de nettoyage
    • Services CVC
    Autres
    • Organisation à but non lucratif
    • Agence environnementale
    • Location de panneaux d'affichage
    • Photographie
    • Leasing de vélos
    • Revendeur de logiciel
    Parcourir toutes les industries
  • Communauté
    Apprenez
    • Tutoriels
    • Documentation
    • Certifications
    • Formation
    • Blog
    • Podcast
    Renforcer l'éducation
    • Programme éducatif
    • Business Game Scale-Up!
    • Rendez-nous visite
    Obtenir le logiciel
    • Téléchargement
    • Comparez les éditions
    • Versions
    Collaborer
    • Github
    • Forum
    • Événements
    • Traductions
    • Devenir partenaire
    • Services pour partenaires
    • Enregistrer votre cabinet comptable
    Nos Services
    • Trouver un partenaire
    • Trouver un comptable
    • Rencontrer un conseiller
    • Services de mise en œuvre
    • Références clients
    • Assistance
    • Mises à niveau
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Obtenir une démonstration
  • Tarification
  • Aide
Vous devez être inscrit pour interagir avec la communauté.
Toutes les publications Personnes Badges
Étiquettes (Voir toutl)
odoo accounting v14 pos v15
À propos de ce forum
Vous devez être inscrit pour interagir avec la communauté.
Toutes les publications Personnes Badges
Étiquettes (Voir toutl)
odoo accounting v14 pos v15
À propos de ce forum
Aide

Expected singleton

S'inscrire

Recevez une notification lorsqu'il y a de l'activité sur ce poste

Cette question a été signalée
pythonsingletonodoo12
3 Réponses
5668 Vues
Avatar
BulldogSoft, Pamela Castaneda

I have this function that does its job, but i tried to make the field store=True and when i update it gives me and expected singleton error Expected singleton: project.project(2, 3, 1).

 this is my code.

sum_pre = fields.Float(string="Total Presupuesto Aprobado", required=False, compute='presupuesto_sum')

@api.depends('tasks.sum_total_cost')
def presupuesto_sum(self):
    etapa = self.env['project.task'].search([('project_id', '=', self.id), ('stage_id', '=', 'Presupuesto Aprobado')])
    for data in etapa:
        if data:
            self.sum_pre = round(sum(etapa.mapped('sum_total_cost')), 2)

Someone knows how to resolve it or where i have the error, Thanks!

                  0
                  Avatar
                  Ignorer
                  Avatar
                  Niyas Raphy (Walnut Software Solutions)
                  Meilleure réponse

                  Hi,

                  Can you update the function with a for loop like this and see,

                  def presupuesto_sum(self):
                  for rec in self:
                  etapa = self.env['project.task'].search(
                  [('project_id', '=', rec.id), ('stage_id', '=', 'Presupuesto Aprobado')])
                  for data in etapa:
                  if data:
                  rec.sum_pre = round(sum(etapa.mapped('sum_total_cost')), 2)

                  Thanks

                  1
                  Avatar
                  Ignorer
                  BulldogSoft, Pamela Castaneda
                  Auteur

                  Thanks Niyas Raphy, this works fine

                  Avatar
                  Baiju KS
                  Meilleure réponse

                  Hi Pamela Castaneda,

                  Now you are using the "sum_pre" field in the form view only, right?

                  In this case without attribute "store=True", it's calculating the value on the fly when you are opening the form. In this case, the self in

                  etapa = self.env['project.task'].search([('project_id', '=', self.id), ('stage_id', '=', 'Presupuesto Aprobado')])

                  will be a single record of the current form. So it will work fine.

                  But when you give the attribute "store=True" and update, it will try to compute and store the value of field "sum_pre" in all the existing records at once, now the self in the above code will be a recordset and it will throw the Expected singleton error as it is expecting a single record in self.

                  To avoid this you have to iterate the self, using the for loop like

                          for project in self:
                  You will get the same error if you use the "sum_pre" field in tree view without attribute "store=True"

                  Hope this helps.
                  2
                  Avatar
                  Ignorer
                  BulldogSoft, Pamela Castaneda
                  Auteur

                  Thanks for the explanation, it is very useful information for me.

                  Avatar
                  Russ Schneider
                  Meilleure réponse

                  Somewhere you're pulling in three project ids.  Some variable.  Perhaps sum_total_cost?


                  0
                  Avatar
                  Ignorer
                  Vous appréciez la discussion ? Ne vous contentez pas de lire, rejoignez-nous !

                  Créez un compte dès aujourd'hui pour profiter de fonctionnalités exclusives et échanger avec notre formidable communauté !

                  S'inscrire
                  Publications associées Réponses Vues Activité
                  Create Journal Entries whit code Résolu
                  python odoo12
                  Avatar
                  Avatar
                  Avatar
                  2
                  août 25
                  10800
                  Two many2many fields related to each other inside one model Résolu
                  python odoo12
                  Avatar
                  1
                  juin 22
                  10095
                  how to make invoice date field readonly false for administrator after validating invoice in odoo12?
                  python odoo12
                  Avatar
                  Avatar
                  1
                  sept. 21
                  4691
                  Update tax in invoice line
                  python odoo12
                  Avatar
                  0
                  août 21
                  95
                  How do I find Average Cost Function?
                  python odoo12
                  Avatar
                  0
                  juil. 21
                  172
                  Communauté
                  • Tutoriels
                  • Documentation
                  • Forum
                  Open Source
                  • Téléchargement
                  • Github
                  • Runbot
                  • Traductions
                  Services
                  • Hébergement Odoo.sh
                  • Assistance
                  • Migration
                  • Développements personnalisés
                  • Éducation
                  • Trouver un comptable
                  • Trouver un partenaire
                  • Devenir partenaire
                  À propos
                  • Notre société
                  • Actifs de la marque
                  • Contactez-nous
                  • Emplois
                  • Événements
                  • Podcast
                  • Blog
                  • Clients
                  • Informations légales • Confidentialité
                  • Sécurité.
                  الْعَرَبيّة 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 est une suite d'applications open source couvrant tous les besoins de votre entreprise : CRM, eCommerce, Comptabilité, Inventaire, Point de Vente, Gestion de Projet, etc.

                  Le positionnement unique d'Odoo est d'être à la fois très facile à utiliser et totalement intégré.

                  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