Перейти к содержимому
Odoo Меню
  • Войти
  • Попробовать бесплатно
  • Модули
    Финансы
    • Бухгалтерия
    • Выставление счетов
    • Расходы
    • Таблицы
    • Документооборот
    • Подпись
    Продажи
    • CRM
    • Продажи
    • POS Магазин
    • POS Ресторан
    • Подписки
    • Аренда
    Вебсайты
    • Конструктор вебсайтов
    • eCommerce
    • Блог
    • Форум
    • Онлайн-чат
    • Электронное обучение
    Логистика
    • Склад
    • Производство
    • PLM
    • Закупки
    • Обслуживание
    • Качество
    Отдел кадров
    • Сотрудники
    • Подбор персонала
    • Отпуска
    • Оценка персонала
    • Реферальная программа
    • Автопарк
    Маркетинг
    • SMM
    • E-mail рассылки
    • СМС рассылки
    • Мероприятия
    • Автоматизация маркетинга
    • Опросы
    Услуги
    • Проекты
    • Табели
    • Выездной сервис
    • Поддержка
    • Планирование
    • Встречи
    Продуктивность
    • Обсуждения
    • Согласование
    • IoT
    • VoIP-телефония
    • Knowledge
    • WhatsApp
    Сторонние приложения Модуль Студия Odoo Платформа Odoo Cloud
  • Индустрии
    Розничная торговля
    • Книжный магазин
    • Магазин одежды
    • Мебельный магазин
    • Продуктовый магазин
    • Строительный магазин
    • Магазин игрушек
    Гостинично-ресторанный бизнес
    • Бар и паб
    • Ресторан
    • Фастфуд
    • Гостевой дом
    • Дистрибьютор напитков
    • Отель
    Недвижимость
    • Агентство недвижимости
    • Архитектурное бюро
    • Строительство
    • Управление недвижимостью
    • Ландшафтный дизайн
    • Товарищество собственников жилья
    Консалтинг
    • Бухгалтерская фирма
    • Партнер Odoo
    • Маркетинговое агентство
    • Юридическая фирма
    • Подбор персонала
    • Аудиторское бюро
    Производство
    • Текстиль
    • Металл
    • Мебель
    • Продукты питания
    • Пивоварня
    • Корпоративные сувениры
    Здоровье и фитнес
    • Спортивный комплекс
    • Магазин оптики
    • Фитнес-клуб
    • Велнес-центр
    • Аптека
    • Салон красоты
    Услуги
    • Специалист по бытовым услугам
    • Продажа и обслуживание IT-оборудования
    • Солнечные энергосистемы
    • Производство обуви
    • Клининг
    • Системы ОВКВ
    Прочее
    • Некоммерческая организация
    • Консалтинг в сфере устойчивого развития
    • Аренда рекламных щитов
    • Бизнес по фотосъемке
    • Прокат велосипедов
    • Реселлер программного обеспечения
    Все индустрии
  • Community
    Обучение
    • Видео уроки
    • Документация
    • Сертификация
    • Тренинг
    • Блог
    • Подкаст
    Образование и развитие
    • Образовательная программа
    • Деловая игра Scale Up!
    • Экскурсия в офис Odoo
    ПО
    • Скачать
    • Сравнить версии
    • Релизы
    Сотрудничество
    • Github
    • Форум
    • Мероприятия
    • Перевод
    • Стать партнером
    • Услуги для партнеров
    • Зарегистрировать бухгалтерскую фирму
    Услуги
    • Найти партнера
    • Найти бухгалтера
    • Встреча с экспертом
    • Услуги по внедрению
    • Отзывы клиентов
    • Поддержка
    • Обновления
    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:

  • CRM
  • e-Commerce
  • Бухгалтерия
  • Склад
  • PoS
  • Проекты
  • MRP
All apps
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Помощь

Check for valid address before confirm an invoice, Odoo 16 CE

Подписаться

Получайте уведомления о появлении активности в этом посте

Этот вопрос был отмечен
invoiceconfirmation
1 Ответить
1852 Представления
Аватар
M. Höppner

Hello,

according to my accountant we always need an invoice address on an invoice ;-).
Some colleagues "always" forget that - that is why:


We need an additional check in Odoo 16 CE. 

An invoice can only be confirmed if the invoice address is complete: postcode, city, street, but also email. 

When Confirm is clicked, a pop-up or warning should appear. 

Standard users receive a warning that the address is incomplete. There should be a note/promt to complete it or to contact a user from the Chief Accounting group. These users should be listed with their real names. 

Users from the Chief Accounting group should see a pop-up with a warning similar to the one above: However, there should be 2 buttons: 1 button for "Go back" and 1 button for "OK confirm anyway".


  1. Question: is there an option / a tickbox I do not know to achieve that behaviour (or similar) out of the standard?
  2. Can someone check the module I tried to write with the help of an AI (sorry, I do not have the knowledge for that)?
structure:
/
├── __init__.py
├── __manifest__.py
├── models/
│   ├── __init__.py
│   └── account_move.py
└── views/
    └── account_move_views.xml

files:

__init__.py

from . import models


__manifest__.py

{
    'name': 'Invoice Address Validation',
    'version': '1.0',
    'category': 'Accounting',
    'summary': 'Verhindert das Bestätigen von Rechnungen bei unvollständiger Rechnungsadresse',
    'author': 'Dein Name',
    'depends': ['account'],
    'data': [
        'views/account_move_views.xml',
    ],
    'installable': True,
    'application': False,
}


models/__init__.py

from . import account_move
from . import warning_wizard

models/account_move.py

from odoo import models, fields, api, _

from odoo.exceptions import UserError


class AccountMove(models.Model):

    _inherit = 'account.move'


    @api.constrains('partner_id')

    def _check_invoice_address(self):

        for move in self:

            if move.move_type == 'out_invoice':  # Nur für Kundenrechnungen

                if not move.partner_id.street or not move.partner_id.zip or not move.partner_id.city or not move.partner_id.email:

                    # Fehler für Standard-User (keine Manager)

                    if not self.env.user.has_group('account.group_account_manager'):

                        accounting_managers = self.env['res.users'].search([('groups_id', 'in', self.env.ref('account.group_account_manager').id)])

                        managers_names = ', '.join([user.name for user in accounting_managers])

                        raise UserError(_('Die Rechnungsadresse ist unvollständig. Bitte fügen Sie die fehlenden Informationen hinzu oder kontaktieren Sie einen Accounting Manager: %s') % managers_names)


    def action_post(self):

        for move in self:

            if move.move_type == 'out_invoice':  # Nur für Kundenrechnungen

                if not move.partner_id.street or not move.partner_id.zip or not move.partner_id.city or not move.partner_id.email:

                    if self.env.user.has_group('account.group_account_manager'):

                        # Pop-up für Accounting Manager

                        return {

                            'type': 'ir.actions.act_window',

                            'name': 'Adresse unvollständig',

                            'res_model': 'warning.wizard',

                            'view_mode': 'form',

                            'view_id': self.env.ref('your_module_name.warning_wizard_view_form').id,

                            'target': 'new',

                        }

                    else:

                        # Fehlermeldung für Standard-User

                        accounting_managers = self.env['res.users'].search([('groups_id', 'in', self.env.ref('account.group_account_manager').id)])

                        managers_names = ', '.join([user.name for user in accounting_managers])

                        raise UserError(_('Die Rechnungsadresse ist unvollständig. Bitte fügen Sie die fehlenden Informationen hinzu oder kontaktieren Sie einen Accounting Manager: %s') % managers_names)

        # Wenn alles in Ordnung ist, den Super-Aufruf nutzen, um fortzufahren

        return super(AccountMove, self).action_post()



models/warning_wizard.py

from odoo import models, fields


class WarningWizard(models.TransientModel):

    _name = 'warning.wizard'

    _description = 'Warnung für unvollständige Adresse'


    message = fields.Text(string="Warnung", readonly=True, default="Die Rechnungsadresse ist unvollständig. Möchten Sie die Rechnung trotzdem bestätigen?")


    def action_confirm(self):

        # Rechnung trotzdem bestätigen

        active_id = self.env.context.get('active_id')

        if active_id:

            invoice = self.env['account.move'].browse(active_id)

            invoice._post(soft=False)  # Rechnung bestätigen

        return {'type': 'ir.actions.act_window_close'}


    def action_cancel(self):

        # Abbrechen

        return {'type': 'ir.actions.act_window_close'}



views/account_move_views.xml


(Uups - I can not insert the text / xml - it disappears...)


I can Install the modul but it does not work.
Frist test as a member of the chief accountant group gives me the error (hopefully the important lines):

...stuck ... :-(  I do not know, what I changed the last minutes...

Looking forward to get help.
Maybe someone knows an app from the app stor that solves the expectation.
Thanks








0
Аватар
Отменить
Аватар
Niyas Raphy (Walnut Software Solutions)
Лучший ответ

Hi,
By default there is no option for this, so coming to the added code, could you share the error message that you receive with the above codes.

Thanks

0
Аватар
Отменить
Не оставайтесь в стороне – присоединяйтесь к обсуждению!

Создайте аккаунт сегодня, чтобы получить доступ к эксклюзивным функциям и стать частью нашего замечательного сообщества!

Регистрация
Похожие посты Ответы Просмотры Активность
change between 2 Invoice formats Решено
invoice
Аватар
Аватар
1
июл. 25
1729
Hello, how can I change the size of the logo and the invoice? Решено
invoice
Аватар
Аватар
Аватар
2
июл. 25
2072
Validation Error. You will need to clear the Journal Entry's Number to proceed
invoice
Аватар
Аватар
1
июл. 25
3017
Restricting Salesperson Access to Customer Invoice Details
invoice
Аватар
Аватар
Аватар
3
апр. 25
2920
Odoo 16 - Download invoice preview doesn't work
invoice
Аватар
Аватар
Аватар
3
апр. 25
3894
Сообщество
  • Видео уроки
  • Документация
  • Форум
Открытый исходный код
  • Скачать
  • Github
  • Runbot
  • Перевод
Услуги
  • Хостинг Odoo.sh
  • Поддержка
  • Обновление
  • Индивидуальные решения по доработке
  • Образование
  • Найти бухгалтера
  • Найти партнера
  • Стать партнером
О нас
  • Наша компания
  • Активы бренда
  • Cвяжитесь с нами
  • Вакансии
  • Мероприятия
  • Подкаст
  • Блог
  • Клиенты
  • Правовые документы • Конфиденциальность
  • Безопасность
الْعَرَبيّة 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 – это набор бизнес-модулей с открытым исходным кодом, который закроет все потребности вашей компании: CRM, E-commerce, Бухгалтерия, Склад, POS, управление проектами и др.

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