# -*- coding: utf-8 -*-
##############################################################################
#
#    datenpol gmbh
#    Copyright (C) 2013-TODAY datenpol gmbh ()
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU Affero General Public License as
#    published by the Free Software Foundation, either version 3 of the
#    License, or (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU Affero General Public License for more details.
#
#    You should have received a copy of the GNU Affero General Public License
#    along with this program.  If not, see .
#
##############################################################################
from odoo import api, fields, models
class AccountInvoiceLine(models.Model):
    _inherit = 'account.invoice.line'
    intrastat_id = fields.Many2one(comodel_name='report.intrastat.code', string='Intrastat Code')
    @api.one
    def create(self, vals):
        if vals.get('product_id', False) and not vals.get('intrastat_id', False):
            vals.update(intrastat_id=self.env['product.template'].browse(vals['product_id']).intrastat_id.id)
        return super(AccountInvoiceLine, self).create(vals)
class AccountPaymentTerm(models.Model):
    _inherit = 'account.payment.term'
    code = fields.Char(string='Code')
class AccountInvoice(models.Model):
    _inherit = 'account.invoice'
    positions = fields.Integer(string='Positionen', compute='_compute_positions')
    num_items = fields.Integer(string='Anzahl der Artikel', compute='_compute_num_items')
    weight_total = fields.Float(string='Gesamtgewicht', compute='_compute_weight_total')
    @api.multi
    def _compute_weight_total(self):
        for record in self:
            sum = 0
            for line in record.invoice_line_ids:
                sum += line.product_id.weight * line.quantity
            record.weight_total = sum
    @api.multi
    def _compute_positions(self):
        for record in self:
            record.positions = len(record.invoice_line_ids)
    @api.multi
    def _compute_num_items(self):
        for record in self:
            num_items = 0
            for line in record.invoice_line_ids:
                if line.uom_id == self.env.ref('product.product_uom_unit'): # wenn die Mengeneinheit Stk. ist
                    num_items += line.quantity
            record.num_items = num_items
class AccountInvoiceReport(models.Model):
    _inherit = "account.invoice.report"
    commission_user_id = fields.Many2one('res.users', string='Provisionsempfänger', readonly=True)
    def _select(self):
        res = super(AccountInvoiceReport, self)._select()
        res += ', sub.commission_user_id as commission_user_id'
        return res
    def _sub_select(self):
        res = super(AccountInvoiceReport, self)._sub_select()
        res += ', partner.commission_user_id'
        return res
    def _group_by(self):
        res = super(AccountInvoiceReport, self)._group_by()
        res += ', partner.commission_user_id'
        return res