DigitalSignage/models/dss_provision.py

92 lines
3.4 KiB
Python
Executable File

# -*- 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()