summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/sales_target.py
blob: ac6405e55078aea8497eba06437e275bc0e74752 (plain)
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