# -*- coding: utf-8 -* import ast import datetime import json import re import uuid import logging import base64 import subprocess import tempfile import easywebdav import os import os.path from odoo import api, fields, models, _ from odoo import tools from . import dss_settings from odoo.exceptions import ValidationError from datetime import date from datetime import datetime from dateutil.relativedelta import relativedelta from pyffmpeg import FFmpeg from tuya_iot import TuyaOpenAPI, TUYA_LOGGER from tuya_connector import TuyaOpenAPI, TUYA_LOGGER import sys TUYA_LOGGER.setLevel(logging.DEBUG) _logger = logging.getLogger(__name__) class dssprovision(models.Model): _name = "dss.provision" _description = "DigitalSignage Provisionen" _rec_name = "provisionname" _inherit = ['mail.thread','mail.activity.mixin','dss.triggermodel'] uuid = fields.Char(default=lambda self: self._default_uuid(), required=True, readonly=True, copy=False, string='UUID') date_create = fields.Date('Erstellungsdatum',default=lambda self: self._default_create_date()) user_create = fields.Char('Erstellungsuser',default=lambda self: self._default_create_user()) provisionname = fields.Char('Kurzbezeichnung der Provision',tracking=True) contract = fields.Many2one('dss.contracts' , string='Vertrag', store=True,tracking=True) project = fields.Many2one(related='contract.project' , string='Project', store=True,tracking=True) client = fields.Many2one(related='contract.client',string="Kunde (wenn angelegt)") contract_writer = fields.Many2one(related='contract.contract_writer',string="Vertragsschreiber", store=True) provisionbase = fields.Selection([('VZAHL','Volle Zahlung'),('TZAHL','Teil Betrag FIX'),('PZAHL','Teil Betrag Prozent')], tracking=True, store=True) provisiongesamt = fields.Float('Gesamtsumme Provision', tracking=True) provisionprozent = fields.Float('Ausgezahlte Prozent',tracking=True) provisionteil = fields.Float('Auszahlungs-Summe', tracking=True) paydate = fields.Date('Zahlungsdatum', tracking=True) @api.model def _default_uuid(self): return str(uuid.uuid4()) def _default_create_date(self): return str(date.today()) def _default_create_user(self): return str(self.env.user.name) @api.onchange('provisionbase') def _onchange_provisionbase(self): if self.provisionbase == "PZAHL": _logger.info('Calc Provisionpart : ' + str(self.provisionbase) + ' \% ' + str(self.provisionprozent)); try: self.provisionteil = self.provisiongesamt/100*self.provisionprozent except: self.provisionteil = 0 elif self.provisionbase == "VZAHL": _logger.info('Calc Provisionpart : ' + str(self.provisionbase) + ' \V ' + str(self.provisiongesamt)); self.provisionteil = self.provisiongesamt self.provisionprozent = 100 else: _logger.info('Calc Provisionpart : ' + str(self.provisionbase) + ' \T ' + str(self.provisionteil)); self.provisionteil = self.provisionteil @api.onchange('provisionprozent') def _onchange_provisionprozent(self): self._onchange_provisionbase() def pyadd_entry_tocontract(self): self._onchange_provisionbase() self.contract.provisions=[(4,self.id)] self.contract._compute_provisionspayedpercent() def pycancel_entry(self): self.unlink()