1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
from odoo import fields, models, api
from datetime import datetime, timedelta
import logging
_logger = logging.getLogger(__name__)
class SalesTarget(models.Model):
_name = 'sales.target'
partner_id = fields.Many2one('res.partner', string='Customer')
period = fields.Integer(string='Periode')
omset_last_year = fields.Float(string='Omset Tahun Lalu')
ongoing_omset_odoo = fields.Float(string='Omset Berjalan Odoo', compute='_compute_ongoing_omset')
ongoing_omset_accurate = fields.Float(string='Omset Berjalan Accurate')
ongoing_omset_adempiere = fields.Float(string='Omset Berjalan ADempiere')
ongoing_omset_total = fields.Float(string='Total Omset', compute='_compute_total_omset')
target = fields.Float(string='Target')
def _compute_total_omset(self):
for target in self:
target.ongoing_omset_total = target.ongoing_omset_odoo + target.ongoing_omset_accurate + target.ongoing_omset_adempiere
def _compute_ongoing_omset(self):
for target in self:
target.ongoing_omset_odoo = 0
if not target.ids:
return True
partners = []
if target.partner_id.parent_id:
parent_id = target.partner_id.parent_id
else:
parent_id = target.partner_id
partners += parent_id.child_ids
partners.append(parent_id)
datefrom = datetime(target.period, 1, 1, 00, 00)
# datefrom = datefrom.strftime('%Y-%m-%d %H:%M:%S')
dateto = datetime(target.period, 12, 31, 23, 59)
# dateto = dateto.strftime('%Y-%m-%d %H:%M:%S')
total_omset = 0
for partner in partners:
domain = [
('partner_id', '=', partner.id),
('state', 'not in', ['draft', 'cancel']),
('move_type', 'in', ('out_invoice', 'out_refund')),
('invoice_date', '>=', datefrom),
('invoice_date', '<=', dateto)
]
invoices = target.env['account.move'].search(domain)
for invoice in invoices:
total_omset += invoice.amount_untaxed
target.ongoing_omset_odoo = total_omset
|