mirror of
https://github.com/bringout/oca-ocb-sale.git
synced 2026-04-27 11:52:00 +02:00
Initial commit: Sale packages
This commit is contained in:
commit
14e3d26998
6469 changed files with 2479670 additions and 0 deletions
96
odoo-bringout-oca-ocb-sale/sale/wizard/sale_order_cancel.py
Normal file
96
odoo-bringout-oca-ocb-sale/sale/wizard/sale_order_cancel.py
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class SaleOrderCancel(models.TransientModel):
|
||||
_name = 'sale.order.cancel'
|
||||
_inherit = 'mail.composer.mixin'
|
||||
_description = "Sales Order Cancel"
|
||||
|
||||
@api.model
|
||||
def _default_email_from(self):
|
||||
if self.env.user.email:
|
||||
return self.env.user.email_formatted
|
||||
raise UserError(_("Unable to post message, please configure the sender's email address."))
|
||||
|
||||
@api.model
|
||||
def _default_author_id(self):
|
||||
return self.env.user.partner_id
|
||||
|
||||
# origin
|
||||
email_from = fields.Char(string="From", default=_default_email_from)
|
||||
author_id = fields.Many2one(
|
||||
'res.partner',
|
||||
string="Author",
|
||||
index=True,
|
||||
ondelete='set null',
|
||||
default=_default_author_id,
|
||||
)
|
||||
|
||||
# recipients
|
||||
recipient_ids = fields.Many2many(
|
||||
'res.partner',
|
||||
string="Recipients",
|
||||
compute='_compute_recipient_ids',
|
||||
readonly=False,
|
||||
)
|
||||
order_id = fields.Many2one('sale.order', string="Sale Order", required=True, ondelete='cascade')
|
||||
display_invoice_alert = fields.Boolean(
|
||||
string="Invoice Alert",
|
||||
compute='_compute_display_invoice_alert',
|
||||
compute_sudo=True,
|
||||
)
|
||||
|
||||
@api.depends('order_id')
|
||||
def _compute_recipient_ids(self):
|
||||
for wizard in self:
|
||||
wizard.recipient_ids = wizard.order_id.partner_id \
|
||||
| wizard.order_id.message_partner_ids \
|
||||
- wizard.author_id
|
||||
|
||||
@api.depends('order_id')
|
||||
def _compute_display_invoice_alert(self):
|
||||
for wizard in self:
|
||||
wizard.display_invoice_alert = bool(
|
||||
wizard.order_id.invoice_ids.filtered(lambda inv: inv.state == 'draft')
|
||||
)
|
||||
|
||||
@api.depends('order_id')
|
||||
def _compute_subject(self):
|
||||
for wizard in self:
|
||||
if wizard.template_id:
|
||||
wizard.subject = wizard.template_id._render_field(
|
||||
'subject',
|
||||
wizard.order_id.ids,
|
||||
post_process=True,
|
||||
compute_lang=True,
|
||||
)[wizard.order_id.id]
|
||||
|
||||
@api.depends('order_id')
|
||||
def _compute_body(self):
|
||||
for wizard in self:
|
||||
if wizard.template_id:
|
||||
wizard.body = wizard.template_id._render_field(
|
||||
'body_html',
|
||||
wizard.order_id.ids,
|
||||
post_process=True,
|
||||
compute_lang=True,
|
||||
)[wizard.order_id.id]
|
||||
|
||||
def action_send_mail_and_cancel(self):
|
||||
self.ensure_one()
|
||||
self.order_id.message_post(
|
||||
subject=self.subject,
|
||||
body=self.body,
|
||||
message_type='comment',
|
||||
email_from=self.email_from,
|
||||
email_layout_xmlid='mail.mail_notification_light',
|
||||
partner_ids=self.recipient_ids.ids,
|
||||
)
|
||||
return self.action_cancel()
|
||||
|
||||
def action_cancel(self):
|
||||
return self.order_id.with_context(disable_cancel_warning=True).action_cancel()
|
||||
Loading…
Add table
Add a link
Reference in a new issue