Перейти к содержимому
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
Об этом форуме
Помощь

Can I generate Customer Invoices directly from done / completed Delivery Orders?

Подписаться

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

Этот вопрос был отмечен
invoicedeliveryorderfromgeneratequickstart
1 Ответить
168 Представления
Аватар
Community Question

I have several Customers who place multiple Sales Orders during each month. 

We invoice them once a month.

Each Sales Order typically needs to be delivered via multiple Delivery Orders.

The standard Invoice does merge all Sales Orders but what we would really like is to show which lines were delivered from each Delivery and each Sales Order.

How can we do this?

0
Аватар
Отменить
Аватар
Ray Carnes (ray)
Лучший ответ
Here is something we have been prototyping, this may be improved as we test more cases, and may need to be modified.

First, create a field x_invoiced on the stock.picking model so Deliver Orders can be marked if they are Invoiced this way.

Next, create an Execute Code Server Action so you can add an option to the Action Menu when you select multiple Delivery Orders at month end.

if records.filtered(lambda p:p.picking_type_code != 'outgoing'):
raise UserError("Only Delivery Orders can be Invoiced!")
if records.filtered(lambda p:p.state != 'done'):
raise UserError("Only Done Delivery Orders can be Invoiced!")
delivered_moves = env['stock.move'].search([('picking_id', 'in', records.ids),('state', '=', 'done'),
('sale_line_id', '!=', False)], order='picking_id asc, id asc')

if not delivered_moves:
raise UserError("No delivered items found that are linked to a Sales Order Line.")

records = records.sorted(lambda p:p.date_done)

move_groups = {}
for move in delivered_moves:
partner = move.picking_id.partner_id
company = move.picking_id.company_id
currency = company.currency_id

key = (partner.id, currency.id, company.id)
if key not in move_groups:
move_groups[key] = {'moves': env['stock.move'], 'pickings': set()}
move_groups[key]['moves'] += move
move_groups[key]['pickings'].add(move.picking_id.id)

new_invoices = env['account.move']
sequence = 10

for key, data in move_groups.items():
partner_id, currency_id, company_id = key
partner = env['res.partner'].browse(partner_id)
company = env['res.company'].browse(company_id)
invoice_line_vals_list = []
pickings_in_group = env['stock.picking'].browse(list(data['pickings']))
sequential_pickings = records & pickings_in_group
for picking in sequential_pickings:
picking_moves = data['moves'].filtered(lambda m: m.picking_id.id == picking.id)
if not picking_moves:
continue
sale_order = picking.sale_id
picking_name = picking.name
comment_text = f'{picking_name}'
if sale_order:
comment_text += f' from {sale_order.name}'
comment_text += f' shipped {picking.date_done.day}/{picking.date_done.month}'
if picking.carrier_tracking_ref:
comment_text += f" via tracking# {picking.carrier_tracking_ref}"
comment_line_vals = {
'display_type': 'line_section',
'name': comment_text,
'sequence': sequence,
}
invoice_line_vals_list.append((0, 0, comment_line_vals))

sequence+=1
for move in picking_moves:
sale_line = move.sale_line_id
quantity_to_invoice = move.quantity
product_line_vals = sale_line._prepare_invoice_line(quantity=quantity_to_invoice)
product_line_vals.update({
'sequence': sequence,
'sale_line_ids': [(6, 0, [sale_line.id])],
})
invoice_line_vals_list.append((0, 0, product_line_vals))
sequence+=1

picking.write({'x_invoiced': True})
picking_names = sequential_pickings.mapped('name')
origin_string = ", ".join(picking_names)
order_names_with_duplicates = sequential_pickings.mapped('origin')
unique_order_names = list(set(order_names_with_duplicates))
unique_order_names.sort()
reference_string = ", ".join(unique_order_names)

invoice_vals = {
'move_type': 'out_invoice',
'partner_id': partner_id,
'currency_id': currency_id,
'company_id': company_id,
'invoice_origin': origin_string,
'ref': reference_string,
'invoice_user_id': env.user.id,
'invoice_line_ids': invoice_line_vals_list,
}

invoice = env['account.move'].create(invoice_vals)
new_invoices += invoice
if new_invoices:
if len(new_invoices) == 1:
invoice = new_invoices[0]
action = {
'type': 'ir.actions.act_window',
'name': 'Created Invoice',
'res_model': 'account.move',
'view_mode': 'form',
'res_id': invoice.id, # Specify the ID of the single record to open
}
else:
action = {
'type': 'ir.actions.act_window',
'name': 'Created Invoices',
'res_model': 'account.move',
'view_mode': 'list,form',
'domain': [('id', 'in', new_invoices.ids)],
}

Impact:

Both the Invoice PDF and the Portal View of the Invoice reflect this same breakdown.

Note: your Odoo Digital Advisor or Odoo Partner can help you if you don't have the skills to do this, or have further questions or concerns about this approach. This is a prototype and not a solution.

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

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

Регистрация
Похожие посты Ответы Просмотры Активность
The delivery and paid checkbox do not marked
invoice delivery order
Аватар
Аватар
1
мар. 15
5096
Printing Delivery Order error
delivery order
Аватар
0
мар. 15
5892
Invoicing External Trade Mx_loc: How to show the number of reliable exporter on the pdfs and xml of customer invoices Решено
invoice quickstart Mexico
Аватар
1
апр. 23
2939
[Odoo 16] Invoices go straight to "paid" when I register a payment Решено
accounting invoice quickstart
Аватар
Аватар
Аватар
3
нояб. 22
6381
From Sales order to Delivery and Invoice in one step Решено
invoice delivery salesorder
Аватар
Аватар
Аватар
Аватар
3
нояб. 22
5143
Сообщество
  • Видео уроки
  • Документация
  • Форум
Открытый исходный код
  • Скачать
  • 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