Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
3 Trả lời
3907 Lượt xem

And I'd like to add domains to it (e.g. domain="[('date','=',time.strftime('%Y-%m-%d')),('state','=','done')]" ). I have tried making email templates using crm.phonecall.report.graph module, but with no success.

Ảnh đại diện
Huỷ bỏ

Create an automated action (scheduler) that runs every day. Make it browse through the records and search for the reports you need (your date filtering). Send the e-mail with the send_mail function and simply attach the report to the e-mail.

Tác giả

Could you elaborate a bit more? I've never done any automated actions, so a little guide would be awesome.

Tác giả Câu trả lời hay nhất

Managed to do it using API and Python. You can make it run daily/weekly/montly by using cron.(Im running this in an Ubuntu server)

References: 

https://www.odoo.com/documentation/8.0/api_integration.html
https://docs.python.org/2/library/email-examples.html


Code: 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import datetime
from datetime import date
import xmlrpclib
from xmlrpclib import ServerProxy
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
SERVER = 'SERVERADDRESS'
db = 'DBNAME'
user_id = 'admin'
password = 'password'
#Connecting to the server
server = ServerProxy(SERVER+'/xmlrpc/common')
uid = server.login(db, user_id, password)
server = ServerProxy(SERVER+'/xmlrpc/object')
start = 'today'
stop = 'tomorrow'
#Example query
#returns a dictionary or False
query = server.execute_kw(db, uid, password,
'crm.phonecall', 'search_read',
[[['date','>=',start],['date','<=',stop],['state','ilike','done']]],
{'fields': ['user_id']})
#PARSE YOUR DATA
msg = MIMEMultipart('alternative')
COMMASPACE = ', '
people = ['person1@space.com','person2@otherplace.com']
me = 'me@me.me'
msg['Subject'] = 'SUBJECT'
msg['From'] = me
msg['To'] = COMMASPACE.join(people)
html = """\
<html>
    <head>
        <style></style>
    </head>
    <body>Parsed data from the query goes here. You can use CSS.</body>
</html>
"""
part1 = MIMEText(html, 'html')
msg.attach(part1)
# Send the message via our own SMTP server, but don't include the
# envelope header.
s = smtplib.SMTP('SMTPADDRESS')
s.starttls()
s.login('me@me.me', 'password123')
s.sendmail('me@me.me', people, msg.as_string())
s.quit()

Ảnh đại diện
Huỷ bỏ

If you share your solution, it would benefit others. (And your 'solution' would be worth the correct answer!!).

Tác giả

Edited

Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 4 20
3319
0
thg 4 18
3061
0
thg 7 15
2933
7
thg 9 23
7841
0
thg 8 20
2056