Merge branch 'develop'

develop
Andreas Brückl 2018-12-18 16:48:03 +01:00
commit 69e2b2a973
25 changed files with 268 additions and 134 deletions

View File

@ -6,7 +6,7 @@
{
'name': "Web Environment Ribbon",
'version': '11.0.1.0.0',
'version': '11.0.1.0.2',
'category': 'Web',
'author': 'Francesco OpenCode Apruzzese, '
'Tecnativa, '

View File

@ -12,10 +12,10 @@ msgstr ""
"PO-Revision-Date: 2017-07-13 16:06+0000\n"
"Last-Translator: Niki Waibel <niki.waibel@gmail.com>, 2017\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: web_environment_ribbon

View File

@ -13,10 +13,10 @@ msgstr ""
"PO-Revision-Date: 2017-07-26 02:44+0000\n"
"Last-Translator: Quentin THEURET <odoo@kerpeo.com>, 2017\n"
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: web_environment_ribbon

View File

@ -12,11 +12,12 @@ msgstr ""
"PO-Revision-Date: 2017-07-13 16:06+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 2017\n"
"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: hr\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: web_environment_ribbon
#: model:ir.model.fields,field_description:web_environment_ribbon.field_web_environment_ribbon_backend_display_name

View File

@ -11,11 +11,12 @@ msgstr ""
"POT-Creation-Date: 2017-07-13 16:06+0000\n"
"PO-Revision-Date: 2017-07-13 16:06+0000\n"
"Last-Translator: Peter Hageman <hageman.p@gmail.com>, 2017\n"
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/teams/23907/nl_NL/)\n"
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
"teams/23907/nl_NL/)\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: nl_NL\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: web_environment_ribbon

View File

@ -9,14 +9,16 @@ msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-13 16:06+0000\n"
"PO-Revision-Date: 2017-07-13 16:06+0000\n"
"Last-Translator: Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatic4@gmail.com>, 2017\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n"
"PO-Revision-Date: 2018-08-03 12:34+0000\n"
"Last-Translator: Rodrigo Macedo <rmsolucoeseminformatic4@gmail.com>\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/"
"23907/pt_BR/)\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.1.1\n"
#. module: web_environment_ribbon
#: model:ir.model.fields,field_description:web_environment_ribbon.field_web_environment_ribbon_backend_display_name
@ -36,4 +38,4 @@ msgstr "Última Modificação em"
#. module: web_environment_ribbon
#: model:ir.model,name:web_environment_ribbon.model_web_environment_ribbon_backend
msgid "Web Environment Ribbon Backend"
msgstr ""
msgstr "Back-end da fita do ambiente da Web"

View File

@ -12,11 +12,12 @@ msgstr ""
"PO-Revision-Date: 2017-07-13 16:06+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3);\n"
#. module: web_environment_ribbon
#: model:ir.model.fields,field_description:web_environment_ribbon.field_web_environment_ribbon_backend_display_name

View File

@ -1,7 +1,7 @@
# Copyright 2017 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp import api, models
from odoo import api, models
class WebEnvironmentRibbonBackend(models.AbstractModel):
@ -17,7 +17,7 @@ class WebEnvironmentRibbonBackend(models.AbstractModel):
@api.model
def _prepare_ribbon_name(self):
name_tmpl = self.env['ir.config_parameter'].get_param('ribbon.name')
name_tmpl = self.env['ir.config_parameter'].sudo().get_param('ribbon.name')
vals = self._prepare_ribbon_format_vals()
return name_tmpl.format(**vals)
@ -31,7 +31,7 @@ class WebEnvironmentRibbonBackend(models.AbstractModel):
name = self._prepare_ribbon_name()
return {
'name': name,
'color': ir_config_model.get_param('ribbon.color'),
'background_color': ir_config_model.get_param(
'color': ir_config_model.sudo().get_param('ribbon.color'),
'background_color': ir_config_model.sudo().get_param(
'ribbon.background.color'),
}

View File

@ -30,6 +30,7 @@ class MaterialType(models.Model):
print_default_code = fields.Boolean(string='Drucke Artikelnummer', required=True, help='Definiert, ob die Artikelnummer gedruckt wird')
print_sales_pic = fields.Boolean(string='Drucke Artikelbild', default=True, required=False, help='Definiert, ob ein Artikelbild gedruckt wird (Angebot/Auftrag)')
print_production_pic = fields.Boolean(string='Drucke Produktionsbild', default=False, required=False, help='Definiert, ob ein Produktionsbild gedruckt wird (Produktionsauftrag)')
production_relevant = fields.Boolean(string='Drucke auf Produktionsschein', default=True, required=False, help='Definiert, ob ein Artikel mit diesem Materiatyp am Produktionsschein angedruckt wird. (Produktionsauftrag)')
_sql_constraints = [
('name_uniq', 'unique(name)', 'Die Bezeichnung muss eindeutig sein')

View File

@ -60,6 +60,8 @@ class ProductTemplate(models.Model):
manufacturing_number = fields.Char(string='Herstellnummer')
product_color = fields.Char(string='Farbe')
suppl_ids = fields.One2many('product.supplierinfo', 'product_tmpl_id')
@api.onchange('length', 'width', 'thickness', 'height')
def _onchange_measures(self):
if self.length>0 and self.width>0 and self.thickness>0:
@ -80,6 +82,7 @@ class ProductTemplate(models.Model):
if product_template:
product_template.write(vals)
else:
if vals['active']:
self.create(vals)
return True

View File

@ -28,6 +28,7 @@ class Company(models.Model):
_inherit = 'res.company'
eori_nr = fields.Char(string='EORI-Nr')
fax = fields.Char(related='partner_id.fax')
@api.model
def set_company_logo(self, company, logo):

View File

@ -26,7 +26,14 @@ from odoo.addons.queue_job.job import job
from odoo import tools, api, fields, models, _
from odoo.exceptions import ValidationError
from dateutil.relativedelta import relativedelta
import dateutil.parser
import datetime
try:
import stdnum.eu.vat as stdnum_vat
except ImportError:
stdnum_vat = None
class PartnerEventListener(Component):
_name = 'res.partner.listener'
@ -64,16 +71,64 @@ class Partner(models.Model):
active = fields.Boolean(track_visibility='onchange')
portal_export_pending = fields.Boolean(string='Portal Export ausständig')
date_vat_check = fields.Date(string='Datum der letzten UID-Prüfung')
warn_vat_date = fields.Boolean(compute='_get_warn_date', store=False, default=False)
collective_bill = fields.Boolean(string='Sammelrechnung', default=True)
country_id = fields.Many2one('res.country', string='Country', ondelete='restrict', default=_default_country_id)
commission_account_ids = fields.Many2many(comodel_name='commission.account', string='Provisionsempfänger')
partner_flash = fields.Char()
fax = fields.Char(string='Fax')
_sql_constraints = [
('ref_uniq', 'unique(ref)', 'Die Interne Referenz muss eindeutig sein'),
('portal_id_uniq', 'unique(portal_id)', 'Die Portal-ID muss eindeutig sein')
]
@api.multi
def _get_warn_date(self):
for record in self:
if record.date_vat_check:
date_today = fields.Date.from_string(fields.Date.context_today(self))
warn_date = date_today - relativedelta(months=+3)
try:
# if record.date_vat_check < '2000-01-01':
# record.date_vat_check = '2000-01-01'
check_date = dateutil.parser.parse(record.date_vat_check).date()
except:
check_date = date_today - relativedelta(months=+36)
if check_date < warn_date:
record.warn_vat_date = True
@api.multi
def action_check_vat(self):
for record in self:
if record.vat:
vat_country, vat_number = self._split_vat(record.vat)
try:
result = stdnum_vat.check_vies_approx(vat_country+vat_number,"ATU54619104")
except Exception as ex:
# Avoid blocking the client when the service is unreachable/unavailable
raise Warning(
_("UID-Prüfung: %s Service ist nicht verfügbar") % record.vat)
return {}
if not result['valid']:
vat_valid = self.vies_vat_check(vat_country, vat_number)
if not vat_valid:
raise ValidationError(
_("UID-INVALID: Die UID '%s' ist ungültig oder hat ein falsches Format") % record.vat)
record.date_vat_check = fields.Date.today()
myresult= dict(result)
msg_post = ('<b>UID-Nr geprüft:</b><br>%s%s<br>%s<br>%s<br>%s<br>Abfrage-Nr: %s<br>Valid: %s') % \
(myresult.get('countryCode',''),myresult.get('vatNumber','')\
,myresult.get('traderName','k.A.')\
,myresult.get('traderCompanyType','k.A.')\
,myresult.get('traderAddress','k.A.')\
,myresult.get('requestIdentifier','k.A.')\
,myresult.get('valid', 'k.A.'))
record.message_post(body=msg_post)
@api.multi
@api.constrains('is_company', 'vat')
def _check_unique_vat(self):

View File

@ -57,6 +57,7 @@ class SaleOrder(models.Model):
assembly_notes = fields.Text()
earliest_scheduled_date = fields.Datetime(compute='_compute_earliest_scheduled_date')
positions = fields.Integer(string='Positionen', compute='_compute_positions')
production_positions = fields.Integer(string='Positionen', compute='_compute_positions', store=False)
num_items = fields.Integer(string='Anzahl der Artikel', compute='_compute_num_items')
weight_total = fields.Float(string='Gesamtgewicht', compute='_compute_weight_total')
confirmation_nr = fields.Char('Freigabenummer')
@ -113,7 +114,14 @@ class SaleOrder(models.Model):
@api.multi
def _compute_positions(self):
for record in self:
record.positions = len(record.order_line)
p = 0
pp = 0
for line in record.order_line:
p += 1
if line.product_id.material_type_id.production_relevant:
pp += 1
record.positions = p
record.production_positions = pp
@api.multi
def _compute_num_items(self):

View File

@ -11,6 +11,7 @@
<field name="print_default_code"/>
<field name="print_sales_pic"/>
<field name="print_production_pic"/>
<field name="production_relevant"/>
</group>
</form>
</field>
@ -25,6 +26,7 @@
<field name="print_default_code"/>
<field name="print_sales_pic"/>
<field name="print_production_pic"/>
<field name="production_relevant"/>
</tree>
</field>
</record>

View File

@ -110,4 +110,20 @@
name="X-Kategorien"
action="product_xcategory_action"/>
<record id="product_template_search_view_tz" model="ir.ui.view">
<field name="name">product.template.search.tz</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_search_view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='categ_id']" position="after">
<field name="manufacturing_number" string="Herstellnummer" filter_domain="[('manufacturing_number','ilike',self)]"/>
<field name="suppl_ids" string="Lieferanten-Bestellnummer"
filter_domain="[('suppl_ids.product_name','ilike',self)]"/>
<filter string="Produktart" domain="[]" context="{'group_by':'type'}"/>
<filter string="Interne Kategorie" domain="[]" context="{'group_by':'categ_id'}"/>
<filter string="Materialtyp" domain="[]" context="{'group_by':'material_type_id'}"/>
</xpath>
</field>
</record>
</odoo>

View File

@ -9,6 +9,9 @@
<field name="company_registry" position="after">
<field name="eori_nr"/>
</field>
<field name="email" position="before">
<field name="fax" string="Fax"/>
</field>
</field>
</record>

View File

@ -17,6 +17,25 @@
<field name="name2" placeholder="Unternehmen 2"/>
</h3>
</xpath>
<xpath expr="//field[@name='vat']" position="replace">
<label for="vat"/>
<div class="o_row" name="vat_group">
<field name="vat" placeholder="e.g. BE0477472701"/>
<field name="warn_vat_date" attrs="{'invisible':True}"/>
<field name="date_vat_check" attrs="{'readonly':True,'invisible':['|','|',('warn_vat_date','=',True),('vat','=',False),('vat','=','')]}"
style="padding-left:30px;padding-right:30px;"/>
<field name="date_vat_check" attrs="{'readonly':True,'invisible':['|','|',('warn_vat_date','=',False),('vat','=',False),('vat','=','')]}"
style="padding-left:30px;padding-right:30px;background-color:red;"/>
<button class="btn oe_read_only" attrs="{'invisible':['|','|',('warn_vat_date','=',True),('vat','=',False),('vat','=','')]}"
type="object" name="action_check_vat" string="Prüfen"/>
<button class="btn btn-primary oe_read_only" attrs="{'invisible':['|','|',('warn_vat_date','=',False),('vat','=',False),('vat','=','')]}"
type="object" name="action_check_vat" string="Prüfen"/>
</div>
</xpath>
<xpath expr="//field[@name='email']" position="before">
<field name="fax" widget="phone" string="Fax"/>
</xpath>
<field name="opt_out" position="attributes">
<attribute name="groups"/>

View File

@ -97,18 +97,26 @@
</div>
<div class="row">
<div class="col-xs-12 text-center">
<!-- <span>AT 46 3250 1000 0200 9306</span> -->
<!-- <span>RLN WAT WW MIB</span> -->
<!-- <span>Raiffeisenbank Spannberg</span> -->
<strong>
IBAN:
<!-- <span t-if="company.bank_ids" t-esc="company.bank_ids[0].acc_number"/> -->
<span>AT 46 3250 1000 0200 9306</span>
<span t-if="company.bank_ids" t-esc="company.bank_ids[0].acc_number"/>
&#183;
BIC:
<!-- <span t-if="company.bank_ids" t-esc="company.bank_ids[0].bank_id.bic"/> -->
<span>RLN WAT WW MIB</span>
&#183;
<!-- <span t-if="company.bank_ids" t-esc="company.bank_ids[0].bank_id.name"/> -->
<span>Raiffeisenbank Spannberg</span>
<span t-if="company.bank_ids" t-esc="company.bank_ids[0].bank_id.bic"/>
&#183;
<span t-if="company.bank_ids" t-esc="company.bank_ids[0].bank_id.name"/>
</strong>
</div>
</div>
<div class="row">
<div class="col-xs-12 text-center">
<!-- <span>AT 46 3250 1000 0200 9306</span> -->
<!-- <span>RLN WAT WW MIB</span> -->
<!-- <span>Raiffeisenbank Spannberg</span> -->
<strong>
UID-Nr.:
<span t-esc="company.vat"/>
&#183;
@ -160,8 +168,11 @@
<br/>
Phone:
<span t-esc="company.partner_id.phone"/>
<t t-if="company.partner_id.fax">
<br/>
Fax: +43 2538/8628 - 400
Fax:
<span t-esc="company.partner_id.fax"/>
</t>
<br/>
E-Mail:
<span t-esc="company.partner_id.email"/>

View File

@ -1,3 +1,8 @@
div.dp_note {
margin: auto;
overflow: hidden;
}
.bold {
font-weight: bold;
}

View File

@ -85,11 +85,12 @@
</strong>
<span class="col-xs-2" t-field="o.name"/>
</div>
<div class="row mt32"/>
<div class="dp_note">
<p t-if="o.note1">
<span t-field="o.note1"/>
</p>
</div>
<div class="row mt32"/>
<t t-foreach="o.order_lines_layouted()" t-as="page" name="lines_layouted">
<table class="table table-condensed">
<t t-set="discount_is_set" t-value="field_set_in_lines(o.invoice_line_ids, 'discount')"/>
@ -266,7 +267,7 @@
</div>
</div>
<div class="row" style="page-break-inside: avoid">
<div class="row dp_note" style="page-break-inside: avoid">
<p t-if="o.note2">
<span t-field="o.note2" style="page-break-inside: avoid"/>
</p>

View File

@ -141,7 +141,7 @@
</div>
</div>
<div class="row">
<div class="row dp_note">
<p class="col-xs-12">
<span t-field="o.notes"/>
</p>

View File

@ -124,7 +124,7 @@
</div>
</div>
<div class="row">
<div class="row dp_note">
<p class="col-xs-12">
<span t-field="o.notes"/>
</p>

View File

@ -123,10 +123,11 @@
</strong>
<span class="col-xs-2" t-field="o.client_order_ref"/>
</div>
<div class="row mt32"/>
<div class="row mt32 dp_note">
<p t-if="o.note1">
<span t-field="o.note1"/>
</p>
</div>
<table class="table table-condensed" style="background-color: #E6E7E9;">
<t t-set="discount_is_set" t-value="field_set_in_lines(o.order_line, 'discount')"/>
<thead class="table-header">
@ -254,13 +255,13 @@
</div>
</div>
<div class="row" style="page-break-inside: avoid">
<div class="row dp_note" 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">
<div class="row dp_note">
<p class="col-xs-12">
<span t-field="o.note"/>
</p>

View File

@ -290,9 +290,9 @@
</span>
</div>
</div>
<p class="col-xs-12">
<div class="col-xs-12 dp_note">
<span t-field="o.note"/>
</p>
</div>
<p t-if="o.backorder_id">
This shipment is a backorder of<t t-esc="o.backorder_id.name"/>.

View File

@ -39,7 +39,7 @@
<strong>
<span class="col-xs-2">Positionen:</span>
</strong>
<span class="col-xs-2" t-field="o.positions"/>
<span class="col-xs-2" t-field="o.production_positions"/>
</div>
<div class="row height-20">
<div class="col-xs-3" style="padding-right: 4px">
@ -77,10 +77,11 @@
</strong>
<span class="col-xs-2" t-field="o.client_order_ref"/>
</div>
<div class="row mt32"/>
<div class="row mt32 dp_note">
<p t-if="o.note1">
<span t-field="o.note1"/>
</p>
</div>
<table class="table table-condensed" style="background-color: #E6E7E9;">
<thead class="table-header">
<tr>
@ -100,6 +101,7 @@
<tbody class="sale-tbody">
<t t-set="pos_nr" t-value="0"/>
<t t-foreach="o.order_line" t-as="order_line">
<t t-if="order_line.product_id.material_type_id.production_relevant">
<tr>
<t t-set="pos_nr" t-value="pos_nr+1"/>
<td class="text-center">
@ -113,7 +115,7 @@
</strong>
<br/>
</t>
<!--
<!--
<t t-if="order_line.intrastat_id">
<span>
<strong>Zolltarif Nr.:</strong>
@ -121,9 +123,9 @@
</span>
<br/>
</t>
-->
-->
<span t-field="order_line.name"/>
<!--
<!--
<t t-if="order_line.delivery_date and (order_line.delivery_date != o.delivery_date)">
<br/>
<strong>Voraussichtliches Lieferdatum:</strong>
@ -132,7 +134,7 @@
<p t-if="order_line.lot_id">
<span t-esc="order_line.lot_id.name.split('.')[2]"/>
</p>
-->
-->
<p t-if="order_line.lot_id.notes">
<span t-field="order_line.lot_id.notes"/>
</p>
@ -151,7 +153,7 @@
kg
</t>
</td>
<!--
<!--
<td rowspan="2" class="text-right">
<span t-if="order_line.hide_discount"
t-field="order_line.price_reduce"/>
@ -168,7 +170,7 @@
<td rowspan="2" class="text-right">
<span t-field="order_line.price_subtotal"/>
</td>
-->
-->
</tr>
<tr>
<td colspan="2" style="border: 0;text-align: center;">
@ -179,6 +181,7 @@
</td>
</tr>
</t>
</t>
</tbody>
</table>
@ -222,7 +225,7 @@
</div>
</div>
<div class="row" style="page-break-inside: avoid">
<div class="row dp_note" style="page-break-inside: avoid">
<p t-if="o.note2">
<span t-field="o.note2" style="page-break-inside: avoid"/>
</p>