# -*- coding: utf-8 -*-
import datetime
import time
from odoo import api, fields, models, _
class FollowupPrint(models.TransientModel):
_name = 'followup.print'
_description = 'Print Follow-up & Send Mail to Customers'
def _get_followup(self):
if self.env.context.get('active_model',
'ir.ui.menu') == 'followup.followup':
return self.env.context.get('active_id', False)
company_id = self.env.user.company_id.id
followp_id = self.env['followup.followup'].search(
[('company_id', '=', company_id)], limit=1)
return followp_id or False
date = fields.Date('Follow-up Sending Date', required=True,
help="This field allow you to select a forecast date "
"to plan your follow-ups",
default=lambda *a: time.strftime('%Y-%m-%d'))
followup_id = fields.Many2one('followup.followup', 'Follow-Up',
required=True, readonly=True,
default=_get_followup)
partner_ids = fields.Many2many('followup.stat.by.partner',
'partner_stat_rel', 'osv_memory_id',
'partner_id', 'Partners', required=True)
company_id = fields.Many2one('res.company', readonly=True,
related='followup_id.company_id')
email_conf = fields.Boolean('Send Email Confirmation')
email_subject = fields.Char('Email Subject', size=64,
default=_('Invoices Reminder'))
partner_lang = fields.Boolean(
'Send Email in Partner Language', default=True,
help='Do not change message text, if you want to send email in '
'partner language, or configure from company')
email_body = fields.Text('Email Body', default='')
summary = fields.Text('Summary', readonly=True)
test_print = fields.Boolean(
'Test Print', help='Check if you want to print follow-ups without '
'changing follow-up level.')
def process_partners(self, partner_ids, data):
partner_obj = self.env['res.partner']
partner_ids_to_print = []
nbmanuals = 0
manuals = {}
nbmails = 0
nbunknownmails = 0
nbprints = 0
resulttext = " "
for partner in self.env['followup.stat.by.partner'].browse(
partner_ids):
if partner.max_followup_id.manual_action:
partner_obj.do_partner_manual_action([partner.partner_id.id])
nbmanuals = nbmanuals + 1
key = partner.partner_id.payment_responsible_id.name or _(
"Anybody")
if key not in manuals.keys():
manuals[key] = 1
else:
manuals[key] = manuals[key] + 1
if partner.max_followup_id.send_email:
nbunknownmails += partner.partner_id.do_partner_mail()
nbmails += 1
if partner.max_followup_id.send_letter:
partner_ids_to_print.append(partner.id)
nbprints += 1
followup_without_lit = \
partner.partner_id.latest_followup_level_id_without_lit
message = "%s %s %s" % (_("Follow-up letter of "),
followup_without_lit.name,
_(" will be sent"))
partner.partner_id.message_post(body=message)
if nbunknownmails == 0:
resulttext += str(nbmails) + _(" email(s) sent")
else:
resulttext += str(nbmails) + _(
" email(s) should have been sent, but ") + str(
nbunknownmails) + _(
" had unknown email address(es)") + "\n
"
resulttext += "
" + str(nbprints) + _(
" letter(s) in report") + " \n
" + str(nbmanuals) + _(
" manual action(s) assigned:")
needprinting = False
if nbprints > 0:
needprinting = True
resulttext += "
" for item in manuals: resulttext = resulttext + "