Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Afegir opció d'enviar correu a la baixa de sòcia #30

Merged
merged 5 commits into from
Jun 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions som_generationkwh/__terp__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
"wizard/wizard_investment_transfer.xml",
"wizard/wizard_aeat193_from_gkwh_invoices_view.xml",
"wizard/wizard_send_retencio_estalvi_to_members.xml",
"wizard/wizard_baixa_soci.xml",
"investment_view.xml",
"assignment_view.xml",
"somenergia_soci_view.xml",
Expand Down
1 change: 1 addition & 0 deletions som_generationkwh/security/ir.model.access.csv
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
"access_wizard_aeat193_from_gkwh_invoices_w","wizard.aeat193.from.gkwh.invoices","model_wizard_aeat193_from_gkwh_invoices","som_generationkwh.group_som_generationkwh_w",1,1,1,0
"access_send_retencio_estalvi_to_members_wizard_rcwd","send.retencio.estalvi.to.members.wizard","model_send_retencio_estalvi_to_members_wizard","base.group_erp_manager",1,1,1,1
"access_send_retencio_estalvi_to_members_wizard_rcwd","send.retencio.estalvi.to.members.wizard","model_send_retencio_estalvi_to_members_wizard","base.group_system",1,1,1,1
"access_wizard_baixa_soci_rcwd","wizard.baixa.soci","model_wizard_baixa_soci","base.group_partner_manager",1,1,1,1
4 changes: 3 additions & 1 deletion som_generationkwh/somenergia_soci.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ def verifica_baixa_soci(self, cursor, uid, ids, context=None):

if baixa:
raise osv.except_osv(_('El soci no pot ser donat de baixa!'),
_('Ja ha estat donat de baixa baixa anteriorment!'))
_('Ja ha estat donat de baixa anteriorment!'))

gen_invest = invest_obj.search(cursor, uid, [('member_id', '=', member_id),
('emission_id', '=', 1),
Expand Down Expand Up @@ -204,6 +204,8 @@ def delete_rel(cursor, uid, categ_id, res_partner_id):
'comment': comment })
delete_rel(cursor, uid, soci_category_id, res_partner_id)

return True


_columns = {
'has_gkwh': fields.function(
Expand Down
85 changes: 85 additions & 0 deletions som_generationkwh/somenergia_soci_data.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,90 @@
<field name="version_start_date">2016-03-01</field>
<field name="kwh">170</field>
</record>

<!-- Template de baixa de socis- -->
<record model="poweremail.templates" id="email_baixa_soci">
<field name="name">Email de notificació de baixa d'una sòcia</field>
<field name="object_name" model="ir.model" search="[('model', '=', 'somenergia.soci')]"/>
<field eval="0" name="save_to_drafts"/>
<field name="model_int_name">somenergia.soci</field>
<field name="def_to">${object.partner_id.address[0].email}</field>
<field eval="0" name="auto_email"/>
<field eval="0" name="single_email"/>
<field eval="0" name="use_sign"/>
<field name="def_subject">Confirmació baixa persona sòcia / Confirmación baja persona socia</field>
<field name="template_language">mako</field>
<field eval="0" name="send_on_create"/>
<field name="lang"/>
<field eval="0" name="send_on_write"/>
<field name="def_bcc">support.17062.b8d9f4469fa4d856@helpscout.net</field>
<field name="enforce_from_account" model="poweremail.core_accounts" search="[('name','=', 'Info Som Energia')]"/>
<field name="def_body_text"><![CDATA[<!doctype html>
<html>
<head><meta charset='utf8'></head><body>
<%
from mako.template import Template
def render(text_to_render, object_):
templ = Template(text_to_render)
return templ.render_unicode(
object=object_,
format_exceptions=True
)
t_obj = object.pool.get('poweremail.templates')
md_obj = object.pool.get('ir.model.data')
template_id = md_obj.get_object_reference(
object._cr, object._uid, 'som_poweremail_common_templates', 'common_template_legal_footer'
)[1]
text_legal = render(t_obj.read(
object._cr, object._uid, [template_id], ['def_body_text'])[0]['def_body_text'],
object
)
%>
% if object.partner_id.lang != "es_ES":
<br>
Hola,<br>
<br>
Ens posem amb contacte amb tu per informar-te que hem tramitat correctament la teva baixa de persona sòcia.<br>
<br>
T’agraïm el temps que has passat amb nosaltres ajudant-nos a canviar el model energètic actual.<br>
<br>
Desitgem que ens retrobem en un futur.<br>
<br>
Salut i bona energia!<br>
<br>
Equip de Som Energia<br>
<a href="www.somenergia.coop/ca">www.somenergia.coop</a>
info@somenergia.coop
<a href="http://ca.support.somenergia.coop/article/470-com-puc-contactar-amb-la-cooperativa-mail-telefon-etc">Contactar amb Som Energia</a>
% endif

% if object.partner_id.lang != "ca_ES" and object.partner_id.lang != "es_ES":
----------------------------------------------------------------------------------------------------
% endif

% if object.partner_id.lang != "ca_ES":
<br>
Hola,<br>
<br>
Nos ponemos en contacto contigo para informarte que hemos tramitado correctamente tu baja de persona socia.<br>
<br>
Te agradecemos el tiempo que has pasado con nosotros ayudándonos a cambiar el modelo energético actual.<br>
<br>
Deseamos reencontrarnos en un futuro.<br>
<br>
Salud y buena energía!<br>
<br>
Equipo de Som Energia<br>
<a href="www.somenergia.coop/ca">www.somenergia.coop</a>
info@somenergia.coop
<a href="https://es.support.somenergia.coop/article/471-como-puedo-contactar-con-la-cooperativa-mail-telefono-etc">Contactar con Som Energia</a>
% endif
${text_legal}
</body>
</html>

]]></field>
</record>

</data>
</openerp>
18 changes: 0 additions & 18 deletions som_generationkwh/somenergia_soci_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,23 +66,5 @@
<field name="view_id" ref="view_generationkwh_kwh_per_share_tree"/>
</record>
<menuitem action="action_generationkwh_kwh_per_share_tree" id="menu_generationkwh_kwh_per_share_tree" parent="menu_gkwh_base"/>

<record id="view_partner_form_soci_generationkwh_fields" model="ir.ui.view">
<field name="name">somenergia.soci.form</field>
<field name="model">somenergia.soci</field>
<field name="type">form</field>
<field name="inherit_id" ref="som_partner_account.view_partner_form_soci_fields"/>
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<data>
<xpath expr="//form[@string='Partners']/group/field[@name='supplier']" position="after">
<group colspan="2" attrs="{'invisible': [('baixa','=', True)]}">
<button name="verifica_baixa_soci" string="Baixa soci" type="object" icon="gtk-execute"/>
</group>
</xpath>
</data>
</field>
</record>

</data>
</openerp>
3 changes: 2 additions & 1 deletion som_generationkwh/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from emission_tests import *
from investment_tests import *
from partner_tests import *
from somenergia_soci_tests import *
from somenergia_soci_tests import *
from test_wizard_baixa_soci import *
11 changes: 11 additions & 0 deletions som_generationkwh/tests/generation_data_demo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,17 @@
<field name="state">approved</field>
<field name="smtpport">587</field>
</record>

<record model="poweremail.core_accounts" id="info_som_mail_account">
<field name="email_id">info@somenergia.coop</field>
<field name="company">yes</field>
<field name="smtpserver">smtp.mandrillapp.com</field>
<field name="send_pref">html</field>
<field name="name">Info Som Energia</field>
<field name="state">approved</field>
<field name="smtpport">587</field>
</record>

<record id="res_partner_inversor1" model="res.partner">
<field name="bank_inversions" ref="partner_bank1"></field>
</record>
Expand Down
97 changes: 97 additions & 0 deletions som_generationkwh/tests/test_wizard_baixa_soci.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# -*- coding: utf-8 -*-
from destral import testing
from destral.transaction import Transaction
from osv import osv
from datetime import datetime
import poweremail
import mock


class TestWizardBaixaSoci(testing.OOTestCase):
def setUp(self):
self.txn = Transaction().start(self.database)
self.cursor = self.txn.cursor
self.uid = self.txn.user
self.Investment = self.openerp.pool.get('generationkwh.investment')
self.IrModelData = self.openerp.pool.get('ir.model.data')
self.Soci = self.openerp.pool.get('somenergia.soci')
self.WizardBaixaSoci = self.openerp.pool.get('wizard.baixa.soci')
self.AccountObj = self.openerp.pool.get('poweremail.core_accounts')

def tearDown(self):
self.txn.stop()

def test__baixa_soci__allowed(self):
member_id = self.IrModelData.get_object_reference(
self.cursor, self.uid, 'som_generationkwh', 'soci_0003'
)[1]
self.Soci.write(self.cursor, self.uid, [member_id], {'baixa': False, 'data_baixa_soci': None})
context = {'active_ids':[member_id]}

wiz_id = self.WizardBaixaSoci.create(self.cursor, self.uid, {'info':''}, context=context)
self.WizardBaixaSoci.baixa_soci(self.cursor, self.uid, wiz_id, context=context, send_mail=False)

baixa = self.Soci.read(self.cursor, self.uid, member_id, ['baixa'])['baixa']
self.assertTrue(baixa)

def test__baixa_soci__notAllowed(self):
member_id = self.IrModelData.get_object_reference(
self.cursor, self.uid, 'som_generationkwh', 'soci_0001'
)[1]
self.Soci.write(self.cursor, self.uid, [member_id], {'baixa': False, 'data_baixa_soci': None})
context = {'active_ids':[member_id]}

wiz_id = self.WizardBaixaSoci.create(self.cursor, self.uid, {'info':''}, context=context)
self.WizardBaixaSoci.baixa_soci(self.cursor, self.uid, wiz_id, context=context, send_mail=False)

baixa = self.Soci.read(self.cursor, self.uid, member_id, ['baixa'])['baixa']
self.assertFalse(baixa)

@mock.patch("poweremail.poweremail_send_wizard.poweremail_send_wizard.send_mail")
def test__baixa_soci_and_send_mail__allowed(self, mocked_send_mail):
member_id = self.IrModelData.get_object_reference(
self.cursor, self.uid, 'som_generationkwh', 'soci_0003'
)[1]
self.Soci.write(self.cursor, self.uid, [member_id], {'baixa': False, 'data_baixa_soci': None})
context = {'active_ids':[member_id]}

wiz_id = self.WizardBaixaSoci.create(self.cursor, self.uid, {'info':''}, context=context)
self.WizardBaixaSoci.baixa_soci(self.cursor, self.uid, wiz_id, context=context, send_mail=True)

baixa = self.Soci.read(self.cursor, self.uid, member_id, ['baixa'])['baixa']
self.assertTrue(baixa)

template_id = self.IrModelData.get_object_reference(
self.cursor, self.uid, 'som_generationkwh', 'email_baixa_soci'
)[1]

email_from = self.AccountObj.search(self.cursor, self.uid, [('name', '=', 'Info Som Energia')])[0]

expected_ctx = {
'active_ids': [member_id],
'active_id': member_id,
'template_id': template_id,
'src_model': 'somenergia.soci',
'src_rec_ids': [member_id],
'from': email_from,
'state': 'single',
'priority': '0',
}

mocked_send_mail.assert_called_with(self.cursor, self.uid, mock.ANY, expected_ctx)

@mock.patch("poweremail.poweremail_send_wizard.poweremail_send_wizard.send_mail")
def test__baixa_soci_and_send_mail__notAllowed(self, mocked_send_mail):
member_id = self.IrModelData.get_object_reference(
self.cursor, self.uid, 'som_generationkwh', 'soci_0001'
)[1]
self.Soci.write(self.cursor, self.uid, [member_id], {'baixa': False, 'data_baixa_soci': None})

context = {'active_ids':[member_id]}

wiz_id = self.WizardBaixaSoci.create(self.cursor, self.uid, {'info':''}, context=context)
self.WizardBaixaSoci.baixa_soci_and_send_mail(self.cursor, self.uid, wiz_id, context=context)

baixa = self.Soci.read(self.cursor, self.uid, member_id, ['baixa'])['baixa']
self.assertFalse(baixa)
mocked_send_mail.assert_not_called()
1 change: 1 addition & 0 deletions som_generationkwh/wizard/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@
import wizard_investment_transfer
import wizard_aeat193_from_gkwh_invoices
import wizard_send_retencio_estalvi_to_members
import wizard_baixa_soci
94 changes: 94 additions & 0 deletions som_generationkwh/wizard/wizard_baixa_soci.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# -*- coding: utf-8 -*-

from osv import osv, fields
from tools.translate import _
import logging

class WizardBaixaSoci(osv.osv):

_name = 'wizard.baixa.soci'
_columns = {
'state': fields.char('State', size=16),
'info': fields.text('Info')
}
_defaults = {
'state': 'init'
}

def baixa_soci(self, cursor, uid, ids, context=None, send_mail=False):
soci_obj = self.pool.get('somenergia.soci')
soci_id = context['active_ids']

if not isinstance(soci_id, list):
soci_id = [soci_id]
if len(soci_id) != 1:
raise "Has de seleccionar un sol soci"

try:
soci_obj.verifica_baixa_soci(cursor, uid, soci_id[0], context)
except osv.except_osv as e:
self.write(cursor, uid, ids, {'state':'error',
'info': e.message})
else:
if send_mail:
self.send_mail(cursor, uid, soci_id[0])
self.write(cursor, uid, ids, {'state':'ok'})


def baixa_soci_and_send_mail(self, cursor, uid, ids, context=None):
self.baixa_soci(cursor, uid, ids, context, send_mail=True)

def send_mail(self, cursor, uid, soci_id, context=None):
ir_model_data = self.pool.get('ir.model.data')
account_obj = self.pool.get('poweremail.core_accounts')
power_email_tmpl_obj = self.pool.get('poweremail.templates')

template_id = ir_model_data.get_object_reference(
cursor, uid, 'som_generationkwh', 'email_baixa_soci'
)[1]
template = power_email_tmpl_obj.read(cursor, uid, template_id)

email_from = False
template_name = 'Info Som Energia'

if template.get(template_name, False):
email_from = template.get('enforce_from_account')[0]

if not email_from:
email_from = account_obj.search(cursor, uid, [('name', '=', template_name)])[0]

email_params = dict({
'email_from': email_from,
'template_id': template_id
})

logger = logging.getLogger('openerp.poweremail')

try:
wiz_send_obj = self.pool.get('poweremail.send.wizard')
ctx = {
'active_ids': [soci_id],
'active_id': soci_id,
'template_id': email_params['template_id'],
'src_model': 'somenergia.soci',
'src_rec_ids': [soci_id],
'from': email_params['email_from'],
'state': 'single',
'priority': '0',
}

params = {'state': 'single', 'priority': '0', 'from': ctx['from']}
wiz_id = wiz_send_obj.create(cursor, uid, params, ctx)
return wiz_send_obj.send_mail(cursor, uid, [wiz_id], ctx)

except Exception as e:
logger.info(
'ERROR sending email to member {soci_id}: {exc}'.format(
soci_id=soci_id,
exc=e
)
)


WizardBaixaSoci()

Loading