Browse Source

impression lettre PA et tracage

master
root 3 years ago
parent
commit
a7b55c3a63
12 changed files with 172 additions and 36 deletions
  1. +2
    -1
      models/__init__.py
  2. +48
    -10
      models/donation.py
  3. +11
    -0
      models/donation_print_email_history.py
  4. +1
    -16
      models/donation_recurring_template_letter.py
  5. +2
    -2
      models/operation.py
  6. +6
    -1
      models/partner.py
  7. +4
    -0
      security/ir.model.access.csv
  8. +1
    -0
      views/operation.xml
  9. +1
    -0
      views/partner.xml
  10. +31
    -5
      views/recurring_donation.xml
  11. +38
    -1
      wizard/recurring_donation_wizard.py
  12. +27
    -0
      wizard/recurring_donation_wizard.xml

+ 2
- 1
models/__init__.py View File

@ -20,4 +20,5 @@ from . import laposte_ref
from . import settings from . import settings
from . import donation_recurring_template_letter from . import donation_recurring_template_letter
from . import partner_import from . import partner_import
#from . import res_partner_bank
#from . import res_partner_bank
from .import donation_print_email_history

+ 48
- 10
models/donation.py View File

@ -87,7 +87,13 @@ class DonationDonation(models.Model):
) )
year_donation_date=fields.Integer('Year donation date',compute='_compute_year_donation_date',store=True) year_donation_date=fields.Integer('Year donation date',compute='_compute_year_donation_date',store=True)
print_email_history_ids=fields.One2many(
'opendons.donation.print_email_history',
'donation_id',
string='print or email history ',
readonly=True
)
def _compute_year_donation_date(self): def _compute_year_donation_date(self):
for rec in self: for rec in self:
rec.year_donation_date=rec.donation_date.year rec.year_donation_date=rec.donation_date.year
@ -96,14 +102,13 @@ class DonationDonation(models.Model):
#raise Warning(self.recurring_template) #raise Warning(self.recurring_template)
if self.recurring_template=='active': if self.recurring_template=='active':
sepa_payment_method=self.env['account.payment.method'].search([('code','=','sepa_direct_debit')])
sepa_payment_method=self.env['account.payment.method'].search([('code','=','sepa_direct_debit')],limit=1)
if sepa_payment_method: if sepa_payment_method:
id=int(sepa_payment_method.id)
return 4
else:
raise Warning('veuillez configurer la méthode de paiment SEPA')
sepa_payment_mode=self.env['account.payment.mode'].search([('payment_method_id','=',int(sepa_payment_method.id))],limit=1)
if sepa_payment_mode:
self.payment_mode_id=sepa_payment_mode.id
else:
raise Warning(_('Please configure a SEPA payment mode'))
payment_mode_id = fields.Many2one( payment_mode_id = fields.Many2one(
"account.payment.mode", "account.payment.mode",
@ -166,7 +171,20 @@ class DonationDonation(models.Model):
self.mandate_id=False self.mandate_id=False
@api.onchange("payment_mode_id")
def donation_payment_mode_id_change(self):
if self.recurring_template=='active' and self.payment_mode_id:
sepa_payment_method=self.env['account.payment.method'].search([('code','=','sepa_direct_debit')],limit=1)
if sepa_payment_method:
sepa_payment_mode=self.env['account.payment.mode'].search([('payment_method_id','=',int(sepa_payment_method.id))],limit=1)
if sepa_payment_mode:
if self.payment_mode_id!=sepa_payment_mode.id :
self.payment_mode_id=sepa_payment_mode.id
else:
raise ValidationError(_('Please configure SEPA Payment'))
@api.onchange('operation_id') @api.onchange('operation_id')
def _onchange_operation_id(self): def _onchange_operation_id(self):
@ -563,7 +581,27 @@ class DonationDonation(models.Model):
'res_id': wiz.id, 'res_id': wiz.id,
'context': self.env.context, 'context': self.env.context,
} }
def show_print_wizard(self):
self.ensure_one()
assert self.recurring_template == "active"
view=self.env.ref('opendons.recurring_donation_view')
wiz=self.env['opendons.recurringdonationprint.wizard'].create({'donation_id':self.id})
return {
'name': _('Print letter'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'opendons.recurringdonationprint.wizard',
'views': [(view.id, 'form')],
'view_id': view.id,
'target': 'new',
'res_id': wiz.id,
'context': self.env.context,
}
# self.write({"recurring_template": "stopped"}) # self.write({"recurring_template": "stopped"})


+ 11
- 0
models/donation_print_email_history.py View File

@ -0,0 +1,11 @@
from odoo import api, fields, models,_
from odoo.exceptions import UserError,Warning
class opendons_donation_print_email_history(models.Model):
_name = 'opendons.donation.print_email_history'
_description = 'history of print or email sent to partner'
chanel=fields.Char('chanel')
date_action=fields.Date('date action')
template_name=fields.Char('Template name')
donation_id=fields.Many2one('donation.donation')

+ 1
- 16
models/donation_recurring_template_letter.py View File

@ -9,22 +9,7 @@ class DonationRecurringTemplateLetter(models.Model):
html_content=fields.Html('html content',compute='pa_html_content') html_content=fields.Html('html content',compute='pa_html_content')
html_content_print=fields.Html('html content print') html_content_print=fields.Html('html content print')
def action_print_pa(self):
self.ensure_one()
if self.html_content:
html_content_print=self.html_content
html_content_print=html_content_print.replace('{{partner_id.name}}',self.partner_id.name)
html_content_print=html_content_print.replace('{{partner_id.firstname}}',self.partner_id.firstname)
self.html_content_print=self.html_content
return self.env.ref("opendons.report_donation_recurring_letter").report_action(self)
else:
raise Warning('please select a mail to print')
def action_send_pa(self): def action_send_pa(self):
self.ensure_one() self.ensure_one()


+ 2
- 2
models/operation.py View File

@ -30,8 +30,8 @@ class opendons_operation(models.Model):
_inherit = ['mail.thread'] _inherit = ['mail.thread']
_check_company_auto = True _check_company_auto = True
#_order = "__last_update desc" #_order = "__last_update desc"
#code=fields.Char(string='Code',required=True, translate=True,track_visibility='always')
name=fields.Char(string='Name',required=True, translate=True,copy=False,default='operation',track_visibility='always')
code=fields.Char(string='Code',required=True, translate=True,track_visibility='always')
name=fields.Char(string='Name',required=True, translate=True,copy=False,default='campagne',track_visibility='always')
partner_count = fields.Integer(string="count",readonly=True) partner_count = fields.Integer(string="count",readonly=True)
exported_date=fields.Date(string='Exported Date',track_visibility='always', readonly=True) exported_date=fields.Date(string='Exported Date',track_visibility='always', readonly=True)
#end_date=fields.Date(string='Date end',required=True, translate=True,track_visibility='always') #end_date=fields.Date(string='Date end',required=True, translate=True,track_visibility='always')


+ 6
- 1
models/partner.py View File

@ -293,4 +293,9 @@ class partner(models.Model):
raise ValidationError('Invalid mobile') raise ValidationError('Invalid mobile')
@api.onchange('zip')
def _onchange_zip(self):
if self.zip:
if len(self.zip)!=5: raise ValidationError('invalid zip code')
if not self.zip.isnumeric(): raise ValidationError('invalid zip code')
return

+ 4
- 0
security/ir.model.access.csv View File

@ -38,9 +38,13 @@ access_opendons_laposte_ref,opendons_laposte_ref,model_opendons_laposte_ref,dona
access_opendons_recurring_donation_wizard,opendons_recurring_donation_wizard,model_opendons_recurringdonation_wizard,donation.group_donation_manager,1,1,1,1 access_opendons_recurring_donation_wizard,opendons_recurring_donation_wizard,model_opendons_recurringdonation_wizard,donation.group_donation_manager,1,1,1,1
access_opendons_recurring_donationprint_wizard,opendons_recurring_donationprint_wizard,model_opendons_recurringdonationprint_wizard,donation.group_donation_manager,1,1,1,1
access_opendons_recurring_donation,opendons_recurring_donation,model_opendons_recurring_donation,donation.group_donation_manager,1,1,1,1 access_opendons_recurring_donation,opendons_recurring_donation,model_opendons_recurring_donation,donation.group_donation_manager,1,1,1,1
access_opendons_template_pa_letter,opendons_template_pa_letter,model_opendons_template_pa_letter,donation.group_donation_manager,1,1,1,1 access_opendons_template_pa_letter,opendons_template_pa_letter,model_opendons_template_pa_letter,donation.group_donation_manager,1,1,1,1
access_opendons_print_donation_email_history,opendons_print_donation_email_history,model_opendons_donation_print_email_history,donation.group_donation_manager,1,1,1,1
access_opendons_partnerdraft,opendons_partnerdraft,model_opendons_partnerdraft,donation.group_donation_manager,1,1,1,1 access_opendons_partnerdraft,opendons_partnerdraft,model_opendons_partnerdraft,donation.group_donation_manager,1,1,1,1
access_opendons_partnerdraftfile,opendons_partnerdraftfile,model_opendons_partnerdraftfile,donation.group_donation_manager,1,1,1,1 access_opendons_partnerdraftfile,opendons_partnerdraftfile,model_opendons_partnerdraftfile,donation.group_donation_manager,1,1,1,1
access_opendons_partnerdraft_file_mapping,opendons_partnerdraft_file_mapping,model_opendons_partnerdraftfile_mapping,donation.group_donation_manager,1,1,1,1 access_opendons_partnerdraft_file_mapping,opendons_partnerdraft_file_mapping,model_opendons_partnerdraftfile_mapping,donation.group_donation_manager,1,1,1,1

+ 1
- 0
views/operation.xml View File

@ -148,6 +148,7 @@
<field name="id"/> <field name="id"/>
<field name="name"/> <field name="name"/>
<field name="code"/>
<field name="chanel"/> <field name="chanel"/>
<field name="cost"/> <field name="cost"/>
<!-- <button type="object" name="validate" string="global scheme" class="oe_highlight"/> --> <!-- <button type="object" name="validate" string="global scheme" class="oe_highlight"/> -->


+ 1
- 0
views/partner.xml View File

@ -131,6 +131,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="before"> <xpath expr="//field[@name='name']" position="before">
<field name="donor_id" filter_domain="[('donor_id', 'ilike', self)]"/> <field name="donor_id" filter_domain="[('donor_id', 'ilike', self)]"/>
<field name="zip" filter_domain="[('zip', 'ilike', self)]"/>
</xpath> </xpath>
</field> </field>


+ 31
- 5
views/recurring_donation.xml View File

@ -30,10 +30,10 @@
</xpath> --> </xpath> -->
<xpath expr="//field[@name='thanks_template_id']" position="replace">
<!-- <xpath expr="//field[@name='thanks_template_id']" position="replace">
<field name="template_pa_id"/> <field name="template_pa_id"/>
<field name="html_content"/> <field name="html_content"/>
</xpath>
</xpath> -->
<xpath expr="//field[@name='thanks_printed']" position="replace"> <xpath expr="//field[@name='thanks_printed']" position="replace">
<field name="thanks_printed" attrs="{'readonly':[('recurring_template','=','stopped')]}"/> <field name="thanks_printed" attrs="{'readonly':[('recurring_template','=','stopped')]}"/>
@ -82,7 +82,7 @@
</xpath> </xpath>
<xpath expr="//button[@name='active2suspended']" position="after"> <xpath expr="//button[@name='active2suspended']" position="after">
<button name="action_print_pa" type="object" string="Print"/>
<button name="show_print_wizard" type="object" string="Print"/>
<button name="action_send_pa" type="object" string="Email"/> <button name="action_send_pa" type="object" string="Email"/>
</xpath> </xpath>
@ -166,6 +166,30 @@
</record> </record>
<record id="opendons_donation_form" model="ir.ui.view">
<field name="name">donation.recurring.form</field>
<field name="model">donation.donation</field>
<field name="inherit_id" ref="donation.donation_form" />
<field name="arch" type="xml">
<page name="lines" position="after">
<page
name="recurring_print_mail_history"
string="recurring print mail history"
attrs="{'invisible': [('recurring_template', '=', False)]}"
>
<field name="print_email_history_ids" nolabel="1">
<tree>
<field name="date_action"/>
<field name="chanel"/>
<field name="template_name"/>
</tree>
</field>
</page>
</page>
</field>
</record>
<record id="donation_recurring_action" model="ir.actions.act_window"> <record id="donation_recurring_action" model="ir.actions.act_window">
@ -208,9 +232,11 @@
<menuitem id="recurring_donation_top_menu" sequence="15" <menuitem id="recurring_donation_top_menu" sequence="15"
name="Recurring donations" action="recurring_action_tmp" web_icon="opendons,static/description/recurring_donation.png"/> name="Recurring donations" action="recurring_action_tmp" web_icon="opendons,static/description/recurring_donation.png"/>
<menuitem id="recurring_donation_title_menu" parent="recurring_donation_top_menu"
sequence="15" name="Recurring donations"/>
<menuitem id="recurring_donation_title_menu" parent="recurring_donation_top_menu"
sequence="15" name="Recurring donationss"/>
<menuitem id="recurring_donation_menu" action="recurring_action_tmp"
parent="recurring_donation_title_menu" sequence="10"/>
<menuitem id="recurring_generate_menu" action="ir_action_generate_recurring_payment" <menuitem id="recurring_generate_menu" action="ir_action_generate_recurring_payment"
parent="recurring_donation_title_menu" sequence="11"/> parent="recurring_donation_title_menu" sequence="11"/>


+ 38
- 1
wizard/recurring_donation_wizard.py View File

@ -1,4 +1,5 @@
from odoo import fields, models, _ from odoo import fields, models, _
from datetime import datetime,timedelta,date
class RecurringDonationWizard(models.TransientModel): class RecurringDonationWizard(models.TransientModel):
_name = 'opendons.recurringdonation.wizard' _name = 'opendons.recurringdonation.wizard'
@ -6,6 +7,8 @@ class RecurringDonationWizard(models.TransientModel):
stopped_reason=fields.Selection(string='Stop reason',selection=[('motif1', 'Motif 1'), ('motif2', 'Motif 2')]) stopped_reason=fields.Selection(string='Stop reason',selection=[('motif1', 'Motif 1'), ('motif2', 'Motif 2')])
donation_id=fields.Integer('donation id') donation_id=fields.Integer('donation id')
template_pa_id=fields.Many2one('donation.donation.template_pa_id')
def stopRecurringDonation(self): def stopRecurringDonation(self):
@ -14,4 +17,38 @@ class RecurringDonationWizard(models.TransientModel):
donation.recurring_template="stopped" donation.recurring_template="stopped"
donation.stopped_reason=self.stopped_reason donation.stopped_reason=self.stopped_reason
donation.stopped_date=fields.Date.context_today(self) donation.stopped_date=fields.Date.context_today(self)
class RecurringDonationprintWizard(models.TransientModel):
_name = 'opendons.recurringdonationprint.wizard'
_description = 'recurring donation print wizard'
template_id=fields.Many2one('opendons.template_pa_letter')
html_content=fields.Html(related='template_id.html_content')
donation_id=fields.Integer('donation id')
def print(self):
donation=self.env['donation.donation'].search([('id','=',self.donation_id)])
donation.template_pa_id=self.template_id
if self.html_content:
html_content_print=self.html_content
html_content_print=html_content_print.replace('{{partner_id.name}}',donation.partner_id.name)
html_content_print=html_content_print.replace('{{partner_id.firstname}}',donation.partner_id.firstname)
donation.html_content_print=html_content_print
#on trace l'action
vals={}
vals['template_name']=self.template_id.name
vals['chanel']='print'
vals['date_action']=datetime.now().date()
vals['donation_id']=donation.id
res=self.env['opendons.donation.print_email_history'].create(vals)
donation.write({'print_email_history_ids':[4,res.id]})
return self.env.ref("opendons.report_donation_recurring_letter").report_action(donation)
else:
raise Warning('please select a mail to print')

+ 27
- 0
wizard/recurring_donation_wizard.xml View File

@ -16,6 +16,24 @@
</field> </field>
</record> </record>
<record id="recurring_donation_view" model="ir.ui.view">
<field name="name">donation.recurringprint.wizard</field>
<field name="model">opendons.recurringdonationprint.wizard</field>
<field name="arch" type="xml">
<form>
<p>Please select a template to print :</p>
<field name="template_id"/>
<br></br>
<field name="html_content"/>
<footer>
<button name="print" string="Print" type="object"/>
<button string="Cancel" class="btn btn-secondary" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="action_recurring_donation_wizard" model="ir.actions.act_window"> <record id="action_recurring_donation_wizard" model="ir.actions.act_window">
<field name="name">Stop recurring donation</field> <field name="name">Stop recurring donation</field>
<field name="res_model">opendons.recurringdonation.wizard</field> <field name="res_model">opendons.recurringdonation.wizard</field>
@ -24,6 +42,15 @@
<field name="binding_model_id" ref="donation.model_donation_donation"/> <field name="binding_model_id" ref="donation.model_donation_donation"/>
</record> </record>
<record id="action_recurring_donation_print_wizard" model="ir.actions.act_window">
<field name="name">Print recurring donation</field>
<field name="res_model">opendons.recurringdonationprint.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="binding_model_id" ref="donation.model_donation_donation"/>
</record>
</odoo> </odoo>

Loading…
Cancel
Save