diff options
Diffstat (limited to 'indoteknik_custom/models/sales_target.py')
| -rw-r--r-- | indoteknik_custom/models/sales_target.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/indoteknik_custom/models/sales_target.py b/indoteknik_custom/models/sales_target.py new file mode 100644 index 00000000..ac6405e5 --- /dev/null +++ b/indoteknik_custom/models/sales_target.py @@ -0,0 +1,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 |
