Merge branch 'develop'

develop
Andreas Brückl 2018-11-16 13:01:54 +01:00
commit 4456e292c9
11 changed files with 119 additions and 30 deletions

View File

@ -24,6 +24,7 @@ from odoo import fields, models, api, _
from odoo.exceptions import ValidationError
from odoo.addons.queue_job.job import job
class ProductXCategory(models.Model):
_name = 'product.xcategory'
_description = 'X-Kategorie'
@ -59,6 +60,13 @@ class ProductTemplate(models.Model):
manufacturing_number = fields.Char(string='Herstellnummer')
product_color = fields.Char(string='Farbe')
@api.onchange('length', 'width', 'thickness', 'height')
def _onchange_measures(self):
if self.length>0 and self.width>0 and self.thickness>0:
self.volume = self.length*self.width*self.thickness / (1000*1000*1000)
elif self.length>0 and self.width>0 and self.height>0:
self.volume = self.length*self.width*self.height / (1000*1000*1000)
@api.model
def create_product(self, vals):
"""
@ -174,8 +182,12 @@ class ProductPricelistItem(models.Model):
@api.multi
@job
def job_mark_partner_for_export(self, pricelist_id):
partners = self.env['res.partner'].search([('company_type','=','company'),('portal_id','!=',False)])
partners = self.env['res.partner'].search([('portal_id', '!=', False)])
todo_partner = self.env['res.partner']
for partner in partners:
# Search ist auf die Preisliste nicht möglich, daher wird jeder Partner einzeln verglichen
if partner.property_product_pricelist.id == pricelist_id:
partner.portal_export_pending = True
if partner.property_product_pricelist.id == pricelist_id and partner.company_type == 'company':
todo_partner |= partner
todo_partner.write({
'portal_export_pending': True
})

View File

@ -353,6 +353,8 @@ class Partner(models.Model):
name = dict(self.fields_get(['type'])['type']['selection'])[partner.type]
if not partner.is_company:
name = "%s, %s" % (partner.commercial_company_name or partner.parent_id.name, name)
if partner.is_company and self._context.get('name_search'):
name += ' - %s - %s' % (partner.zip, partner.street)
if self._context.get('show_address_only'):
name = partner._display_address(without_company=True)
if self._context.get('show_address'):
@ -366,6 +368,11 @@ class Partner(models.Model):
res.append((partner.id, name))
return res
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
return super(Partner, self.with_context(name_search=True)).name_search(name=name, args=args, operator=operator,
limit=limit)
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
for context_element in self.env.context:
@ -394,6 +401,8 @@ class Partner(models.Model):
return res
class PartnerSector(models.Model):
_name = 'res.partner.sector'
_description = 'Branche'

View File

@ -52,6 +52,13 @@ class StockProductionLot(models.Model):
class StockPicking(models.Model):
_inherit = 'stock.picking'
dlv_partner_ref = fields.Text(compute='_get_partner_ref', store=False, string='Interne Referenz')
@api.multi
def _get_partner_ref(self):
for record in self:
record.dlv_partner_ref = record.partner_id.ref
@api.model
def _formatLang(self, value):
lang = self.partner_id.lang

View File

@ -7,7 +7,7 @@
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='invoice_line_ids']/tree//field[@name='name']" position="after">
<field name="intrastat_id"/>
<field name="intrastat_id" options="{'no_quick_create':True}"/>
</xpath>
<xpath expr="//field[@name='invoice_line_ids']/tree//field[@name='product_id']" position="after">

View File

@ -51,9 +51,11 @@
<field name="assembly_notes"/>
</group>
</field>
<!--
<xpath expr="//field[@name='order_line']/form//field[@name='name']" position="after">
<field name="intrastat_id"/>
<field name="intrastat_id" options="{'no_create': True}"/>
</xpath>
-->
<!--
<xpath expr="//field[@name='order_line']/form//field[@name='product_id']" position="replace">
<field name="product_id" options="{'no_create': True}"/>
@ -71,7 +73,7 @@
<field name="from_designbox"/>
</xpath>
<xpath expr="//field[@name='order_line']/tree//field[@name='name']" position="after">
<field name="intrastat_id"/>
<field name="intrastat_id" options="{'no_quick_create':True}"/>
</xpath>
<xpath expr="//field[@name='order_line']/tree//field[@name='product_id']" position="after">
<field name="item_notes" invisible="1"/>
@ -160,6 +162,7 @@
</field>
<field name="name" position="after">
<field name="order_type"/>
<field name="team_id"/>
<field name="confirmation_nr"/>
</field>
</field>
@ -176,6 +179,7 @@
</field>
<field name="name" position="after">
<field name="order_type"/>
<field name="team_id"/>
<field name="confirmation_nr"/>
</field>
<field name="invoice_status" position="after">
@ -195,6 +199,8 @@
<field name="confirmation_nr"/>
<field name="assembly_state"/>
<field name="order_type"/>
<filter string="IR Heizpaneele" domain="[('team_id.name','=', 'IR Heizpaneele')]" name="from_website_ir_heizpaneele"/>
<filter string="Heizpaneele" domain="[('team_id.name','=', 'Heizpaneele')]" name="from_website_heizpaneele"/>
</field>
<!--
<field name="partner_id" position="after">
@ -209,6 +215,7 @@
<filter string="PG Status" domain="[]" context="{'group_by':'assembly_state'}"/>
<filter string="Rechnungsadresse" domain="[]" context="{'group_by':'partner_invoice_id'}"/>
<filter string="Auftragsart" domain="[]" context="{'group_by':'order_type'}"/>
<filter string="Vertriebskanal" domain="[]" context="{'group_by':'team_id'}"/>
</filter>
</field>
</record>

View File

@ -9,7 +9,7 @@
<field name="ref" position="after">
<field name="assembled" string="Zusammengebaut"/>
<field name="weight"/>
<field name="intrastat_id"/>
<field name="intrastat_id" options="{'no_quick_create':True}"/>
<field name="notes"/>
</field>
<div class="oe_title" position="before">
@ -27,6 +27,9 @@
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="dlv_partner_ref" string="Interne Referenz"/>
</field>
<xpath expr="//field[@name='move_lines']/tree//field[@name='product_id']" position="after">
<field name="manu_lots_visible" invisible="1"/>
<button name="action_show_lot" string="Lot for manufactoring parts" type="object" icon="fa-list" attrs="{'invisible': [('manu_lots_visible', '=', False)]}" options="{&quot;warn&quot;: true}"/>

View File

@ -47,9 +47,9 @@
<t t-if="not (env.context.get('proforma', False) or is_pro_forma)">
<!--
-->
<span t-if="not data.get('tz_report_production', False) and o.state not in ['draft','sent']">Auftragsbestätigung</span>
<span t-if="not data.get('tz_report_production', False) and o.state in ['draft','sent']">Angebot</span>
<span t-if="data.get('tz_report_production',False)">Produktionsschein</span>
<span t-if="not (data or {}).get('tz_report_production', False) and o.state not in ['draft','sent']">Auftragsbestätigung</span>
<span t-if="not (data or {}).get('tz_report_production', False) and o.state in ['draft','sent']">Angebot</span>
<span t-if="(data or {}).get('tz_report_production',False)">Produktionsschein</span>
</t>
<t t-if="env.context.get('proforma', False) or is_pro_forma">
<span>Proformarechnung</span>
@ -187,6 +187,10 @@
</t>
<span t-esc="o.partner_id.street"/>
<br/>
<t t-if="o.partner_id.street2">
<span t-esc="o.partner_id.street2"/>
<br/>
</t>
<span t-esc="o.partner_id.zip"/>
<span t-esc="o.partner_id.city"/>
<br/>

View File

@ -11,8 +11,16 @@
<div class="partner-data">
<span t-esc="o.partner_id.name"/>
<br/>
<t t-if="o.partner_id.name2">
<span t-esc="o.partner_id.name2"/>
<br/>
</t>
<span t-esc="o.partner_id.street"/>
<br/>
<t t-if="o.partner_id.street2">
<span t-esc="o.partner_id.street2"/>
<br/>
</t>
<span t-esc="o.partner_id.zip"/>
<span t-esc="o.partner_id.city"/>
<br/>
@ -258,9 +266,11 @@
</div>
</div>
<p t-if="o.note2">
<span t-field="o.note2"/>
</p>
<div class="row" style="page-break-inside: avoid">
<p t-if="o.note2">
<span t-field="o.note2" style="page-break-inside: avoid"/>
</p>
</div>
<div class="row">
<p class="col-xs-12">

View File

@ -14,6 +14,10 @@
<div class="partner-data">
<span t-esc="o.partner_shipping_id.name"/>
<br/>
<t t-if="o.partner_shipping_id.name2">
<span t-esc="o.partner_shipping_id.name2"/>
<br/>
</t>
<span t-esc="o.partner_shipping_id.street"/>
<br/>
<span t-esc="o.partner_shipping_id.zip"/>
@ -27,6 +31,10 @@
<div class="partner-data">
<span t-esc="o.partner_invoice_id.name"/>
<br/>
<t t-if="o.partner_invoice_id.name2">
<span t-esc="o.partner_invoice_id.name2"/>
<br/>
</t>
<span t-esc="o.partner_invoice_id.street"/>
<br/>
<span t-esc="o.partner_invoice_id.zip"/>
@ -91,11 +99,20 @@
</div>
<div class="row">
<div class="col-xs-3" style="padding-right: 4px">
<strong>
<span class="col-xs-8" style="padding: 0px;width: 58%;">Lieferdatum:</span>
</strong>
<span class="col-xs-4" style="padding: 0px;width: 42%;" t-field="o.earliest_scheduled_date"
t-options='{"widget": "date"}'/>
<t t-if="o.state not in ['draft','sent']">
<strong>
<span class="col-xs-8" style="padding: 0px;width: 58%;">Lieferdatum:</span>
</strong>
<span class="col-xs-4" style="padding: 0px;width: 42%;" t-field="o.earliest_scheduled_date"
t-options='{"widget": "date"}'/>
</t>
<t t-if="o.state in ['draft','sent'] and o.validity_date">
<strong>
<span class="col-xs-8" style="padding: 0px;width: 58%;">Gültig bis:</span>
</strong>
<span class="col-xs-4" style="padding: 0px;width: 42%;" t-field="o.validity_date"
t-options='{"widget": "date"}'/>
</t>
</div>
<strong>
<span class="col-xs-2">Telefon:</span>
@ -237,9 +254,11 @@
</div>
</div>
<p t-if="o.note2">
<span t-field="o.note2"/>
</p>
<div class="row" style="page-break-inside: avoid">
<p t-if="o.note2">
<span t-field="o.note2" style="page-break-inside: avoid"/>
</p>
</div>
<div class="row">
<p class="col-xs-12">
@ -268,9 +287,17 @@
Austausch.
</p>
<t t-if="o.state in ['draft','sent']">
<p class="col-xs-12">
Gültigkeit: 14 Tage ab Ausstellungsdatum
</p>
<t t-if="o.validity_date">
<p class="col-xs-12">
Angebot gültig bis:
<span t-field="o.validity_date"/>
</p>
</t>
<t t-if="not o.validity_date">
<p class="col-xs-12">
Gültigkeit: 14 Tage ab Ausstellungsdatum
</p>
</t>
<p class="col-xs-12">
Auftrag erteilt am: ____________________
</p>

View File

@ -18,6 +18,10 @@
<div class="partner-data">
<span t-esc="o.partner_id.name"/>
<br/>
<t t-if="o.partner_id.name2">
<span t-esc="o.partner_id.name2"/>
<br/>
</t>
<span t-esc="o.partner_id.street"/>
<br/>
<span t-esc="o.partner_id.zip"/>
@ -40,6 +44,10 @@
<div class="partner-data">
<span t-esc="o.sale_id.partner_id.name"/>
<br/>
<t t-if="o.sale_id.partner_id.name2">
<span t-esc="o.sale_id.partner_id.name2"/>
<br/>
</t>
<span t-esc="o.sale_id.partner_id.street"/>
<br/>
<span t-esc="o.sale_id.partner_id.zip"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Sale Order Body -->
<!-- Production Order Body -->
<template id="report_production_document">
<t t-call="web.external_layout">
<t t-set="o" t-value="o.with_context({'lang':o.partner_id.lang})"/>
@ -44,9 +44,9 @@
<div class="row height-20">
<div class="col-xs-3" style="padding-right: 4px">
<strong>
<span class="col-xs-8" style="padding: 0px;width: 58%;">Angebotsdatum:</span>
<span class="col-xs-8" style="padding: 0px;width: 58%;">Auftragsdatum:</span>
</strong>
<span class="col-xs-4" style="padding: 0px;width: 42%;" t-field="o.date_order"
<span class="col-xs-4" style="padding: 0px;width: 42%;" t-field="o.confirmation_date"
t-options='{"widget": "date"}'/>
</div>
<strong>
@ -222,9 +222,11 @@
</div>
</div>
<p t-if="o.note2">
<span t-field="o.note2"/>
</p>
<div class="row" style="page-break-inside: avoid">
<p t-if="o.note2">
<span t-field="o.note2" style="page-break-inside: avoid"/>
</p>
</div>
<!--
<div class="row">