Provisionen
Column Selection Design Improvemente
This commit is contained in:
Regular → Executable
+207
-21
@@ -64,7 +64,7 @@ class dsscontracts(models.Model):
|
||||
_name = "dss.contracts"
|
||||
_description = "DigitalSignage Vertraege"
|
||||
_rec_name = "contract_auto_name"
|
||||
_inherit = ['mail.thread','mail.activity.mixin']
|
||||
_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')
|
||||
cruuid = fields.Char(related='uuid')
|
||||
contract_id = fields.Char("Kundennummer",store=True,tracking=True)
|
||||
@@ -74,6 +74,18 @@ class dsscontracts(models.Model):
|
||||
contract_state_order = fields.Integer(related='contract_state.order',store=True)
|
||||
contract_auto_id = fields.Char("Kundennummer",tracking=True,help="Wird berechnet aus Projektnummer + Kunden ID")
|
||||
contract_auto_name = fields.Char('Vertragskennug',tracking=True,help="Wird berechnet aus Kundennummer + Vertragskennung")
|
||||
contract_payment_done = fields.Boolean('Zahlungeingang erfolgt',tracking=True)
|
||||
contract_payment_done_date = fields.Date('Zahlungeingang Datum',tracking=True)
|
||||
|
||||
remark = fields.Html('Bemerkung',tracking=True)
|
||||
|
||||
contract_writer = fields.Many2one('res.partner', tracking=True)
|
||||
vertragssumme = fields.Float('Vertragssumme :', tracking=True)
|
||||
provisionstyp = fields.Many2one('dss.provisionstypen', tracking=True)
|
||||
provisionsteilcalc = fields.Float('Berechnete Provision :',computed='_compute_prov')
|
||||
provisions = fields.Many2many('dss.provision',tracking=True)
|
||||
provisionspayedpercent = fields.Float('Ausgezahlte Provision % :',computed='_compute_provisionspayedpercent')
|
||||
grafiker = fields.Many2one('res.partner', placeholder="wenn vom Projekt abweichend", domain="['&',('dssinternpartner','=',True),('dssinternpartner_grafik','=',True)]", tracking=True, string="abw. Grafiker",help="Grafiker nur wenn abweichend vom Projektgrafiker")
|
||||
|
||||
contract_remark = fields.Html('Vertragshinweise',tracking=True)
|
||||
|
||||
@@ -81,6 +93,8 @@ class dsscontracts(models.Model):
|
||||
project_id = fields.Integer(related='project.projectid', string='Project ID')
|
||||
projectIid = fields.Integer('Project IID',tracking=True)
|
||||
project_ad_structure = fields.Many2one(related='project.grundsystem_default_adstructure', string='Aufbau')
|
||||
project_grundsystem_typ = fields.Char(related='project.grundsystem_typ', tracking=True)
|
||||
project_grafiker = fields.Many2one(related="project.project_grafiker",tracking=True)
|
||||
|
||||
client = fields.Many2one('res.partner',string="Kunde (wenn angelegt)",domain="['&',('dsspartner','=',True),('dsspartner_werbung','=',True)]",tracking=True,help="Nur zu Benutzen wenn Kunden als Kontakt angelegt wurde")
|
||||
client_id = fields.Char(string="KundenID (2Stellen)",help="Nur der 2 stellige letzte Teil der Kundennummer",tracking=True)
|
||||
@@ -133,6 +147,8 @@ class dsscontracts(models.Model):
|
||||
|
||||
contract_date = fields.Date('Vertragsdatum',tracking=True)
|
||||
start_date = fields.Date('Start/Auslief.datum',tracking=True)
|
||||
contract_cancel_mon = fields.Integer('Kündigungsfrist Monaten',tracking=True)
|
||||
contract_cancel_date = fields.Date('Kündigungsfrist Errechnet', tracking=True)
|
||||
contract_auto_extend = fields.Boolean('autom. V.Verlängerung',tracking=True)
|
||||
contract_auto_extend_time = fields.Char('Verl. Monate',tracking=True)
|
||||
|
||||
@@ -159,13 +175,12 @@ class dsscontracts(models.Model):
|
||||
ads_last_work_state = fields.Many2one(related='ads_last_ad.work_state', string="Arbeitschritt letzt Kamp",help="Arbeitsstatus des letzten Werbekampagnen Eintrags",store=True,readonly=False,group_expand='_expand_ads_last_work_state')
|
||||
ads_last_work_state_color = fields.Char(related='ads_last_ad.work_state_color')
|
||||
ads_last_work_state_text = fields.Char(related='ads_last_ad.work_state_text',store=True,readonly=False)
|
||||
ads_last_work_state_info = fields.Char(related='ads_last_ad.work_state_info')
|
||||
ads_last_work_state_info = fields.Char(related='ads_last_ad.work_state_info',store=True,readonly=False)
|
||||
ads_last_todo_state = fields.Many2one(related='ads_last_ad.todo_state',string="Aufgabe letzt Kamp", help="Aufgabenstatus des letzten Werbekampagnen Eintrags",store=True,readonly=False,group_expand='_expand_ads_last_todo_state')
|
||||
ads_last_todo_state_until = fields.Date(related='ads_last_ad.todo_state_until')
|
||||
ads_last_todo_state_color = fields.Char(related='ads_last_ad.todo_state_color')
|
||||
ads_last_todo_state_text = fields.Char(related='ads_last_ad.todo_state_text',store=True,readonly=False)
|
||||
|
||||
|
||||
vnnox_zugang_erstellt = fields.Boolean('Vnnox Zugang ?',tracking=True)
|
||||
vnnox_zugang_username = fields.Char('Vnnox Username',tracking=True)
|
||||
vnnox_zugang_password = fields.Char('Vnnox Passwort',tracking=True)
|
||||
@@ -174,7 +189,7 @@ class dsscontracts(models.Model):
|
||||
xibo_zugang_erstellt = fields.Boolean('Xibo Zugang ?',tracking=True)
|
||||
xibo_zugang_username = fields.Char('Xibo Username',tracking=True)
|
||||
xibo_zugang_password = fields.Char('Xibo Passwort',tracking=True)
|
||||
vnnox_zugang_gesendet = fields.Boolean('Xibo Zugang gesendet?',tracking=True)
|
||||
xibo_zugang_gesendet = fields.Boolean('Xibo Zugang gesendet?',tracking=True)
|
||||
|
||||
lmw_zugang_erstellt = fields.Boolean('LMW Zugang ?',tracking=True)
|
||||
lmw_zugang_username = fields.Char('LMW Username',tracking=True)
|
||||
@@ -204,6 +219,34 @@ class dsscontracts(models.Model):
|
||||
|
||||
cloudlink = fields.Char('Cloud Verzeichnis',help='Verzeichnis für den Kunde innerhalb des Projekt Ordners')
|
||||
|
||||
@api.depends('vertragssumme')
|
||||
def _compute_prov(self):
|
||||
_logger.info('contract Provision Berechnung : C_' + str(self.id));
|
||||
if self.provisionstyp.provisionbase == 'VSUM':
|
||||
if not self.provisionstyp.provisioncalc:
|
||||
prozent=self.provisionstyp.provisionprozent
|
||||
basis=self.vertragssumme
|
||||
value = (basis/100)*prozent
|
||||
self.provisionsteilcalc = value
|
||||
|
||||
def _compute_provisionspayedpercent(self):
|
||||
addval = 0
|
||||
for prov in self.provisions:
|
||||
_logger.info('contract Provision Payed_part : C_' + str(self.id)+' / '+str(prov.provisionprozent));
|
||||
addval = addval + prov.provisionprozent
|
||||
_logger.info('Contract Provision payed : C_' + str(self.id)+' V '+str(addval));
|
||||
self.provisionspayedpercent = addval
|
||||
|
||||
@api.onchange('provisionstyp')
|
||||
def _onchange_provtype(self):
|
||||
self._compute_prov()
|
||||
self._compute_provisionspayedpercent()
|
||||
|
||||
@api.onchange('vertragssumme')
|
||||
def _onchange_vsumme(self):
|
||||
self._compute_prov()
|
||||
self._compute_provisionspayedpercent()
|
||||
|
||||
@api.model
|
||||
def _expand_ads_last_work_state(self,states,domain,order):
|
||||
if dss_settings.dssSettings._get_settingvalue(self,'show_expand_contract_group_ad_work_state'):
|
||||
@@ -248,12 +291,8 @@ class dsscontracts(models.Model):
|
||||
if resstr is None :
|
||||
resstr = 'nicht ermittelbar'
|
||||
_logger.info('Contract_client_id_change : C_' + str(self.id) + ' - '+str(cidstr)+' vs. '+str(self.contract_auto_id)+'/'+str(resstr)+' vs '+str(self.contract_auto_name));
|
||||
if not self.contract_auto_name:
|
||||
self.contract_auto_name = resstr
|
||||
if not self.contract_auto_id:
|
||||
self.contract_auto_id = cidstr
|
||||
if self.contract_auto_id == "":
|
||||
self.contract_auto_id = cidstr
|
||||
self.contract_auto_name = resstr
|
||||
self.contract_auto_id = cidstr
|
||||
|
||||
@api.onchange('project_id')
|
||||
def _onchange_project_id(self):
|
||||
@@ -263,16 +302,12 @@ class dsscontracts(models.Model):
|
||||
else:
|
||||
cname = record.contract_name
|
||||
resstr = "%s%s %s" % (record.project_id,record.client_id,cname)
|
||||
cidstr = "%s%s" % (record.project_id,record.client_id)
|
||||
cidstr: String = "%s%s" % (record.project_id,record.client_id)
|
||||
if resstr is None :
|
||||
resstr = 'nicht ermittelbar'
|
||||
_logger.info('project_id_change : C_' + str(self.id) + ' - '+str(cidstr)+' vs. '+str(self.contract_auto_id)+'/'+str(resstr)+' vs '+str(self.contract_auto_name));
|
||||
if not self.contract_auto_name:
|
||||
self.contract_auto_name = resstr
|
||||
if not self.contract_auto_id:
|
||||
self.contract_auto_id = cidstr
|
||||
if self.contract_auto_id == "":
|
||||
self.contract_auto_id = cidstr
|
||||
self.contract_auto_name = resstr
|
||||
self.contract_auto_id = cidstr
|
||||
|
||||
@api.onchange('contract_name')
|
||||
def _onchange_contract_name(self):
|
||||
@@ -319,6 +354,66 @@ class dsscontracts(models.Model):
|
||||
# contract=super().create(vals)
|
||||
# return contract
|
||||
|
||||
def action_info_click_ls(self):
|
||||
view=self.env.ref("DigitalSignage.dss_contracts_infofeld_form")
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form' ,
|
||||
'view_id': view.id,
|
||||
'res_model': 'dss.contracts' ,
|
||||
'target': 'new' ,
|
||||
'display_name' : 'Text ändern',
|
||||
'views':[(view.id,'form')],
|
||||
'res_id': self.id ,
|
||||
}
|
||||
|
||||
def action_state_click_ls(self):
|
||||
view=self.env.ref("DigitalSignage.dss_contracts_viewstate_ls_form")
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form' ,
|
||||
'view_id': view.id,
|
||||
'res_model': 'dss.contracts' ,
|
||||
'target': 'new' ,
|
||||
'display_name' : 'Status ändern',
|
||||
'views':[(view.id,'form')],
|
||||
'res_id': self.id ,
|
||||
}
|
||||
|
||||
def action_state_click_lws(self):
|
||||
view=self.env.ref("DigitalSignage.dss_contracts_viewstate_lws_form")
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form' ,
|
||||
'view_id': view.id,
|
||||
'res_model': 'dss.contracts' ,
|
||||
'target': 'new' ,
|
||||
'display_name' : 'Status ändern',
|
||||
'views':[(view.id,'form')],
|
||||
'res_id': self.id ,
|
||||
}
|
||||
|
||||
def action_state_click_lds(self):
|
||||
view=self.env.ref("DigitalSignage.dss_contracts_viewstate_lds_form")
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form' ,
|
||||
'view_id': view.id,
|
||||
'res_model': 'dss.contracts' ,
|
||||
'target': 'new' ,
|
||||
'display_name' : 'Status ändern',
|
||||
'views':[(view.id,'form')],
|
||||
'res_id': self.id ,
|
||||
}
|
||||
|
||||
# return {
|
||||
#'effect':{
|
||||
# 'fadeout':'slow',
|
||||
# 'message':'Status Geklickt',
|
||||
# 'type':'rainbow_man',
|
||||
# }
|
||||
# }
|
||||
''
|
||||
|
||||
@api.model
|
||||
def _default_uuid(self):
|
||||
@@ -387,7 +482,7 @@ class dsscontracts(models.Model):
|
||||
return ""
|
||||
|
||||
def pyaction_dss_contract_addcalendar_rf_runtime(self):
|
||||
self.runtime_calendar_event.unlink()
|
||||
self.env['calendar.event'].search([('id', '=', self.runtime_calendar_event)]).unlink()
|
||||
event = {
|
||||
'start': self.runtime_finish.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'stop': self.runtime_finish.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
@@ -416,9 +511,9 @@ class dsscontracts(models.Model):
|
||||
else:
|
||||
addyears = 0
|
||||
addmonths = bmonths - (addyears*12)
|
||||
enddatum = startdatum + relativedelta(months=addmonths,years=addyears)
|
||||
enddatum = startdatum + relativedelta(months=addmonths,years=addyears,days=-1)
|
||||
elif self.runtimesystem == "T":
|
||||
enddatum = startdatum + relativedelta(days=self.runtime_t)
|
||||
enddatum = startdatum + relativedelta(days=self.runtime_t-1)
|
||||
enddatum = enddatum + relativedelta(days=self.runtime_t)
|
||||
elif self.runtimesystem == "E":
|
||||
enddatum = startdatum
|
||||
@@ -433,6 +528,67 @@ class dsscontracts(models.Model):
|
||||
|
||||
self.runtime_finish = enddatum
|
||||
|
||||
if not self.contract_cancel_mon:
|
||||
cancelmonths = 0
|
||||
else:
|
||||
cancelmonths = self.contract_cancel_mon
|
||||
|
||||
self.contract_cancel_date = enddatum - relativedelta(months=cancelmonths)
|
||||
|
||||
def pyaction_dss_contract_calc_runtime_end(self):
|
||||
if self.start_date:
|
||||
startdatum= self.start_date
|
||||
else:
|
||||
startdatum= self.contract_date
|
||||
if startdatum :
|
||||
if self.runtimesystem == "M":
|
||||
bmonths = 0
|
||||
bmonths = self.runtime_m+self.runtime_bonus_m
|
||||
if bmonths > 12:
|
||||
addyears=bmonths//12
|
||||
else:
|
||||
addyears = 0
|
||||
addmonths = bmonths - (addyears*12)
|
||||
enddatum = startdatum + relativedelta(months=addmonths,years=addyears,days=-1)
|
||||
elif self.runtimesystem == "T":
|
||||
enddatum = startdatum + relativedelta(days=self.runtime_t-1)
|
||||
enddatum = enddatum + relativedelta(days=self.runtime_t)
|
||||
elif self.runtimesystem == "E":
|
||||
enddatum = startdatum
|
||||
if self.runtime_events:
|
||||
mydate = startdatum
|
||||
for event in self.runtime_events:
|
||||
if mydate.strftime('%Y-%m-%d') < event.eventenddate.strftime('%Y-%m-%d'):
|
||||
mydate = event.eventenddate
|
||||
enddatum = mydate
|
||||
elif self.runtimesystem == "S":
|
||||
enddatum = self.runtime_finish
|
||||
|
||||
if not self.contract_cancel_mon:
|
||||
cancelmonths = 0
|
||||
else:
|
||||
cancelmonths = self.contract_cancel_mon
|
||||
|
||||
self.contract_cancel_date = enddatum - relativedelta(months=cancelmonths)
|
||||
|
||||
def pyopen_provadd_form_view(self):
|
||||
_logger.info('Open Add Provision')
|
||||
view=self.env.ref("DigitalSignage.dss_provision_add_form")
|
||||
self._compute_prov()
|
||||
provision=self.env['dss.provision'].create({'contract':self.id,'provisiongesamt':self.provisionsteilcalc,'paydate':date.today()})
|
||||
_logger.info('Open Add Provision '+str(view)+' P_'+str(provision))
|
||||
# self.provisions=[(4,[provision.id])]
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'form' ,
|
||||
'view_type': 'form' ,
|
||||
'view_id': view.id,
|
||||
'res_model': 'dss.provision' ,
|
||||
'target': 'new' ,
|
||||
'display_name' : 'Neu Provision einfügen',
|
||||
'views':[(view.id,'form')],
|
||||
'res_id':provision.id,
|
||||
}
|
||||
|
||||
def tokampagne(self):
|
||||
_logger.info('Click auf Werbekampagne : C_'+str(self.id)+' - prüfe Letzte Aktuelle Kampagne')
|
||||
@@ -458,7 +614,7 @@ class dsscontracts(models.Model):
|
||||
resstr = 'nicht ermittelbar'
|
||||
_logger.debug(resstr)
|
||||
self.contract_auto_name = resstr
|
||||
_logger.info('Click auf Werbekampagne : C_' + str(self.id) + 'A_' + str(ds.id) + ' - Contract_autoname gesetzt '+ str(resstr)+'/'+str(cidstr))
|
||||
_logger.info('Click auf Werbekampagne : C_' + str(self.id) + 'A_' + str(ds.id) + ' - Contract_autoname gesetzt '+ str(resstr))
|
||||
# prüfen ob LetzteKampagne medien hat
|
||||
_logger.info('Click auf Werbekampagne : C_'+str(self.id)+'A_'+str(ds.id)+' - Suche evtl Medien der Kampagne ')
|
||||
medias = self.env['dss.mediarelations'].search(['&',('contract','=',self.id),('ad','=',ds.id)])
|
||||
@@ -696,3 +852,33 @@ class dsscontracts(models.Model):
|
||||
for record in self:
|
||||
self.tokampagne()
|
||||
|
||||
|
||||
def trigger_action_init(self):
|
||||
_logger.info('Contract Cron Running - Start '+str(self)+' start searching')
|
||||
jobcontracts = self.env['dss.contracts'].search([('run_trigger', '=', True)])
|
||||
_logger.info('Contract Cron Running - Start '+str(self)+' Found '+str(len(jobcontracts))+' Trigger')
|
||||
for record in jobcontracts:
|
||||
if not record:
|
||||
_logger.info('Contract Cron Running No Contracts Delivered - searching')
|
||||
else:
|
||||
_logger.info('Contract Cron Running C_' + str(record.id) + ' Check Trigger')
|
||||
if record.run_trigger:
|
||||
_logger.info('Contract Cron Running C_' + str(record.id) + ' Prüfe Triggergruppe TG_' + str(record.triggergroup.id))
|
||||
triggergroup = record.triggergroup
|
||||
if not triggergroup:
|
||||
_logger.info('Contract Cron Running C_' + str(record.id) + ' Triggergruppe TG_' + str(record.triggergroup.id)+' not found')
|
||||
pass
|
||||
else:
|
||||
for trigger in triggergroup.triggers:
|
||||
if not trigger:
|
||||
pass
|
||||
else:
|
||||
_logger.info('Contract Cron Running C_' + str(record) + ' in Triggergruppe TG_' + str(record.triggergroup)+' Prüfe Trigger T_'+str(trigger))
|
||||
if trigger._check_trigger():
|
||||
_logger.info('Contract Cron Trigger T_' + str(trigger)+' executed ')
|
||||
|
||||
|
||||
_logger.info('Contract Cron Running - Finished')
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user