mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-23 16:52:08 +02:00
Initial commit: Core packages
This commit is contained in:
commit
12c29a983b
9512 changed files with 8379910 additions and 0 deletions
|
|
@ -0,0 +1,3 @@
|
|||
from . import snailmail_confirm
|
||||
from . import snailmail_letter_format_error
|
||||
from . import snailmail_letter_missing_required_fields
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class SnailmailConfirm(models.AbstractModel):
|
||||
_name = 'snailmail.confirm'
|
||||
_description = 'Snailmail Confirm'
|
||||
|
||||
model_name = fields.Char()
|
||||
|
||||
@api.model
|
||||
def show_warning(self):
|
||||
return not self.env['ir.config_parameter'].sudo().get_param('%s.warning_shown' % self._name, False)
|
||||
|
||||
def action_open(self):
|
||||
view = self.env.ref('snailmail.snailmail_confirm_view')
|
||||
return {
|
||||
'name': _('Snailmail'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form',
|
||||
'res_model': self._name,
|
||||
'views': [(view.id, 'form')],
|
||||
'view_id': view.id,
|
||||
'target': 'new',
|
||||
'res_id': self.id,
|
||||
'context': self.env.context
|
||||
}
|
||||
|
||||
def action_confirm(self):
|
||||
self.env['ir.config_parameter'].sudo().set_param('%s.warning_shown' % self._name, True)
|
||||
self._confirm()
|
||||
return self._continue()
|
||||
|
||||
def action_cancel(self):
|
||||
self.env['ir.config_parameter'].sudo().set_param('%s.warning_shown' % self._name, True)
|
||||
return self._continue()
|
||||
|
||||
"""
|
||||
Called whether the user confirms or cancels posting the letter, e.g. to continue the action
|
||||
"""
|
||||
def _continue(self):
|
||||
pass
|
||||
|
||||
"""
|
||||
Called only when the user confirms sending the letter
|
||||
"""
|
||||
def _confirm(self):
|
||||
pass
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="snailmail_confirm_view" model="ir.ui.view">
|
||||
<field name="name">snailmail.confirm.view</field>
|
||||
<field name="model">snailmail.confirm</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Snailmail Confirmation">
|
||||
<p>You are about to send this <field name="model_name" readonly="1" class="oe_inline" /> by post. Are you sure you want to continue?</p>
|
||||
<footer>
|
||||
<button string="Confirm" name="action_confirm" type="object" class="btn-primary" data-hotkey="q"/>
|
||||
<button string="Cancel" name="action_cancel" type="object" class="btn-secondary" data-hotkey="x"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
from odoo import api, fields, models
|
||||
|
||||
class SnailmailLetterFormatError(models.TransientModel):
|
||||
_name = 'snailmail.letter.format.error'
|
||||
_description = 'Format Error Sending a Snailmail Letter'
|
||||
|
||||
message_id = fields.Many2one(
|
||||
'mail.message',
|
||||
default=lambda self: self.env.context.get('message_id', None),
|
||||
)
|
||||
snailmail_cover = fields.Boolean(
|
||||
string='Add a Cover Page',
|
||||
default=lambda self: self.env.company.snailmail_cover,
|
||||
)
|
||||
|
||||
def update_resend_action(self):
|
||||
self.env.company.write({'snailmail_cover': self.snailmail_cover})
|
||||
letters_to_resend = self.message_id.letter_ids
|
||||
for letter in letters_to_resend:
|
||||
old_attachment = letter.attachment_id
|
||||
letter.attachment_id = False
|
||||
old_attachment.unlink()
|
||||
letter.write({'cover': self.snailmail_cover})
|
||||
letter.snailmail_print()
|
||||
|
||||
def cancel_letter_action(self):
|
||||
self.message_id.cancel_letter()
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="snailmail_letter_format_error" model="ir.ui.view">
|
||||
<field name="name">snailmail.letter.format.error.form</field>
|
||||
<field name="model">snailmail.letter.format.error</field>
|
||||
<field name="groups_id" eval="[(4,ref('base.group_user'))]"/>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Cancel notification in failure">
|
||||
<p>Our service cannot read your letter due to its format.<br/>
|
||||
Please modify the format of the template or update your settings
|
||||
to automatically add a blank cover page to all letters.</p>
|
||||
<field name="snailmail_cover"/>
|
||||
<label string="Add a Cover Page" class="o_light_label" for="snailmail_cover"/>
|
||||
<footer>
|
||||
<button string="Update Config and Re-send" name="update_resend_action" type="object" class="btn-primary" data-hotkey="q"/>
|
||||
<button string="Cancel Letter" name="cancel_letter_action" type="object" class="btn-primary" data-hotkey="w"/>
|
||||
<button string="Close" class="btn-secondary" special="cancel" data-hotkey="z"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="snailmail_letter_format_error_action" model="ir.actions.act_window">
|
||||
<field name="name">Format Error</field>
|
||||
<field name="res_model">snailmail.letter.format.error</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
|
||||
from odoo import _, api, fields, models
|
||||
|
||||
class SnailmailLetterMissingRequiredFields(models.TransientModel):
|
||||
_name = 'snailmail.letter.missing.required.fields'
|
||||
_description = 'Update address of partner'
|
||||
|
||||
partner_id = fields.Many2one('res.partner')
|
||||
letter_id = fields.Many2one('snailmail.letter')
|
||||
|
||||
street = fields.Char('Street')
|
||||
street2 = fields.Char('Street2')
|
||||
zip = fields.Char('Zip')
|
||||
city = fields.Char('City')
|
||||
state_id = fields.Many2one("res.country.state", string='State')
|
||||
country_id = fields.Many2one('res.country', string='Country')
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields):
|
||||
defaults = super(SnailmailLetterMissingRequiredFields, self).default_get(fields)
|
||||
if defaults.get('letter_id'):
|
||||
letter = self.env['snailmail.letter'].browse(defaults.get('letter_id'))
|
||||
defaults.update({
|
||||
'partner_id': letter.partner_id.id,
|
||||
'street': letter.street,
|
||||
'street2': letter.street2,
|
||||
'zip': letter.zip,
|
||||
'city': letter.city,
|
||||
'state_id': letter.state_id.id,
|
||||
'country_id': letter.country_id.id,
|
||||
})
|
||||
return defaults
|
||||
|
||||
def update_address_cancel(self):
|
||||
self.letter_id.cancel()
|
||||
|
||||
def update_address_save(self):
|
||||
address_data = {
|
||||
'street': self.street,
|
||||
'street2': self.street2,
|
||||
'zip': self.zip,
|
||||
'city': self.city,
|
||||
'state_id': self.state_id.id,
|
||||
'country_id': self.country_id.id,
|
||||
}
|
||||
self.partner_id.write(address_data)
|
||||
letters_to_resend = self.env['snailmail.letter'].search([
|
||||
('partner_id', '=', self.partner_id.id),
|
||||
('error_code', '=', 'MISSING_REQUIRED_FIELDS'),
|
||||
])
|
||||
letters_to_resend.write(address_data)
|
||||
letters_to_resend.snailmail_print()
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="snailmail_letter_missing_required_fields" model="ir.ui.view">
|
||||
<field name="name">snailmail.letter.missing.required.fields.form</field>
|
||||
<field name="model">snailmail.letter.missing.required.fields</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<!-- Field present for correct default_get behavior -->
|
||||
<field name="letter_id" invisible="1"/>
|
||||
<p>The customer address is not complete. Update the address here and re-send the letter.</p>
|
||||
<group>
|
||||
<label for="partner_id" string="Address"/>
|
||||
<div class="o_address_format">
|
||||
<field name="partner_id" readonly="1" options="{'no_open': True}" force_save="1"/>
|
||||
<field name="street" placeholder="Street..." class="o_address_street"/>
|
||||
<field name="street2" placeholder="Street 2..." class="o_address_street"/>
|
||||
<field name="city" placeholder="City" class="o_address_city"/>
|
||||
<field name="state_id" class="o_address_state" placeholder="State" options='{"no_open": True}'/>
|
||||
<field name="zip" placeholder="ZIP" class="o_address_zip"/>
|
||||
<field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'/>
|
||||
</div>
|
||||
</group>
|
||||
<footer>
|
||||
<button string="Update address and re-send" type="object" name="update_address_save" class="btn-primary" data-hotkey="q"/>
|
||||
<button string="Cancel letter" type="object" name="update_address_cancel" class="btn-secondary" data-hotkey="w"/>
|
||||
<button string="Close" special='cancel' class="btn-secondary" data-hotkey="z"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="snailmail_letter_missing_required_fields_action" model="ir.actions.act_window">
|
||||
<field name="name">Failed letter</field>
|
||||
<field name="res_model">snailmail.letter.missing.required.fields</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Loading…
Add table
Add a link
Reference in a new issue