summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/sales_target.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models/sales_target.py')
-rw-r--r--indoteknik_custom/models/sales_target.py55
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