Feedback 1114, 1139, 1147, 1164, 1166
parent
291deedcc2
commit
f6181f82ef
|
|
@ -23,14 +23,13 @@ values = {
|
||||||
"phone": "+43 564564",
|
"phone": "+43 564564",
|
||||||
"mobile": "+43 677 564564",
|
"mobile": "+43 677 564564",
|
||||||
"endkunde": True,
|
"endkunde": True,
|
||||||
"portal_id": "6",
|
"portal_id": "9",
|
||||||
"company": "Bier AG",
|
"company": "Bier AG",
|
||||||
"info_uid": "habe keine",
|
"info_uid": "habe keine",
|
||||||
"info_kundennr": "K1234",
|
"info_kundennr": "K1234",
|
||||||
"email": "max@musterman.at",
|
"email": "max@musterman.at",
|
||||||
"line_ids": ["12345"],
|
"line_ids": ["12345"],
|
||||||
"opt_out": True,
|
"opt_out": True,
|
||||||
"vat": False,
|
|
||||||
"lang": "de"
|
"lang": "de"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -10,14 +10,8 @@ pw = 'x'
|
||||||
odoo = odoorpc.ODOO(host, port=port)
|
odoo = odoorpc.ODOO(host, port=port)
|
||||||
odoo.login(db, user, pw)
|
odoo.login(db, user, pw)
|
||||||
|
|
||||||
values = {
|
|
||||||
"line": "L1",
|
|
||||||
"state": "approved",
|
|
||||||
"limit": 8
|
|
||||||
}
|
|
||||||
|
|
||||||
sale_order_obj = odoo.env['sale.order']
|
sale_order_obj = odoo.env['sale.order']
|
||||||
|
|
||||||
result = sale_order_obj.pg_get_orders("L1", "approved", 8)
|
result = sale_order_obj.pg_get_orders("12345", "approved", 8)
|
||||||
|
|
||||||
print(result)
|
print(result)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ odoo = odoorpc.ODOO(host, port=port)
|
||||||
odoo.login(db, user, pw)
|
odoo.login(db, user, pw)
|
||||||
|
|
||||||
values = {
|
values = {
|
||||||
"default_code": "02",
|
"default_code": "04",
|
||||||
"name": "Produktname",
|
"name": "Produktname",
|
||||||
"length": 45.01,
|
"length": 45.01,
|
||||||
"width": 13.45,
|
"width": 13.45,
|
||||||
|
|
@ -25,10 +25,12 @@ values = {
|
||||||
"notes": "notes",
|
"notes": "notes",
|
||||||
"material_type_id": "Holz",
|
"material_type_id": "Holz",
|
||||||
"categ_id": "all",
|
"categ_id": "all",
|
||||||
"intrastat_id": "Code",
|
"intrastat_id": "TEst",
|
||||||
"sale_ok": True,
|
"sale_ok": True,
|
||||||
"assembly_line_ids": ["12345", "12346"],
|
"assembly_line_ids": ["12345", "12346"],
|
||||||
"list_price": 50.00
|
"list_price": 50.00,
|
||||||
|
"can_be_sold_unconfigured": True,
|
||||||
|
'image': "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
|
||||||
}
|
}
|
||||||
|
|
||||||
product_obj = odoo.env['product.template']
|
product_obj = odoo.env['product.template']
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import odoorpc
|
import odoorpc
|
||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
host = 'localhost'
|
host = 'localhost'
|
||||||
port = 8080
|
port = 8080
|
||||||
|
|
@ -11,23 +12,30 @@ odoo = odoorpc.ODOO(host, port=port)
|
||||||
odoo.login(db, user, pw)
|
odoo.login(db, user, pw)
|
||||||
|
|
||||||
values = {
|
values = {
|
||||||
"name": "Company",
|
"name": "Company2",
|
||||||
"street": "Elterleinplatz 11",
|
"street": "Elterleinplatz 11",
|
||||||
|
"street2": "Teststrasse 30",
|
||||||
"zip": 1170,
|
"zip": 1170,
|
||||||
"city": "Wien",
|
"city": "Wien",
|
||||||
"country_id": "AT",
|
"country_id": "AT",
|
||||||
"fax": "+43 55567051",
|
"fax": "+43 55567051",
|
||||||
"phone": "+43 5556705",
|
"phone": "+43 5556705",
|
||||||
|
"mobile": "+43 446783",
|
||||||
"endkunde": True,
|
"endkunde": True,
|
||||||
"portal_id": "31",
|
"portal_id": "32",
|
||||||
"email": "company@test.at",
|
"email": "company@test.at",
|
||||||
"opt_out": True,
|
"opt_out": True,
|
||||||
"ref": "A144S3",
|
"ref": "A144S4",
|
||||||
"partner_sector_id": "Test",
|
"partner_sector_id": "Test",
|
||||||
"comment": "comment",
|
"comment": "comment",
|
||||||
"vat": False,
|
"vat": False,
|
||||||
"lang": "de",
|
"lang": "de",
|
||||||
"line_ids": ["L1", "L2"]
|
"line_ids": ["12345", "12346"],
|
||||||
|
"property_payment_term_id": "15 Tage",
|
||||||
|
"property_product_pricelist": "EUR",
|
||||||
|
"date_vat_check": "2017-08-04",
|
||||||
|
"active": True,
|
||||||
|
"retail_partner_id": "A144S3",
|
||||||
}
|
}
|
||||||
|
|
||||||
res_partner_obj = odoo.env['res.partner']
|
res_partner_obj = odoo.env['res.partner']
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,7 @@ class ProductTemplate(models.Model):
|
||||||
def taxes_by_company(self, field, company_id, match_tax_ids=None):
|
def taxes_by_company(self, field, company_id, match_tax_ids=None):
|
||||||
taxes_ids = []
|
taxes_ids = []
|
||||||
if match_tax_ids is None:
|
if match_tax_ids is None:
|
||||||
taxes_ids = self.env['ir.values'].get_default(
|
taxes_ids = self.env['ir.default'].get('product.template', field, company_id=company_id)
|
||||||
'product.template', field, company_id=company_id)
|
|
||||||
# If None: return default taxes if []: return empty list
|
# If None: return default taxes if []: return empty list
|
||||||
if not match_tax_ids:
|
if not match_tax_ids:
|
||||||
return isinstance(taxes_ids, list) and taxes_ids or []
|
return isinstance(taxes_ids, list) and taxes_ids or []
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ class ProductTemplate(models.Model):
|
||||||
def _get_specified_fields(self):
|
def _get_specified_fields(self):
|
||||||
return ['default_code', 'name', 'length', 'width', 'thickness', 'surface', 'active', 'weight', 'is_internal',
|
return ['default_code', 'name', 'length', 'width', 'thickness', 'surface', 'active', 'weight', 'is_internal',
|
||||||
'xcat_id', 'notes', 'material_type_id', 'intrastat_id', 'sale_ok', 'assembly_line_ids', 'list_price',
|
'xcat_id', 'notes', 'material_type_id', 'intrastat_id', 'sale_ok', 'assembly_line_ids', 'list_price',
|
||||||
'height', 'categ_id', 'can_be_sold_unconfigured']
|
'height', 'categ_id', 'can_be_sold_unconfigured', 'image']
|
||||||
|
|
||||||
|
|
||||||
class ProductCategory(models.Model):
|
class ProductCategory(models.Model):
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ class Partner(models.Model):
|
||||||
dat_vat_check = fields.Date(string='Datum letzte UID-Prüfung')
|
dat_vat_check = fields.Date(string='Datum letzte UID-Prüfung')
|
||||||
active = fields.Boolean(track_visibility='onchange')
|
active = fields.Boolean(track_visibility='onchange')
|
||||||
portal_export_pending = fields.Boolean(string='Portal Export ausständig')
|
portal_export_pending = fields.Boolean(string='Portal Export ausständig')
|
||||||
|
date_vat_check = fields.Date(string='Datum der letzten UID-Prüfung')
|
||||||
|
|
||||||
_sql_constraints = [
|
_sql_constraints = [
|
||||||
('ref_uniq', 'unique(ref)', 'Die Interne Referenz muss eindeutig sein'),
|
('ref_uniq', 'unique(ref)', 'Die Interne Referenz muss eindeutig sein'),
|
||||||
|
|
@ -68,7 +69,8 @@ class Partner(models.Model):
|
||||||
vals = self.correct_values(vals)
|
vals = self.correct_values(vals)
|
||||||
if not vals.get('active', False):
|
if not vals.get('active', False):
|
||||||
vals['active'] = False
|
vals['active'] = False
|
||||||
return self.create(vals)
|
self.create(vals)
|
||||||
|
return True
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def pg_create_company(self, vals):
|
def pg_create_company(self, vals):
|
||||||
|
|
@ -79,14 +81,14 @@ class Partner(models.Model):
|
||||||
if not partner.is_company:
|
if not partner.is_company:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_("Der Partner mit der Internen Referenz '%s' ist kein Unternehmen" % vals['ref']))
|
_("Der Partner mit der Internen Referenz '%s' ist kein Unternehmen" % vals['ref']))
|
||||||
partner = self.write(vals)
|
self.write(vals)
|
||||||
else:
|
else:
|
||||||
if not vals.get('is_company', False):
|
if not vals.get('is_company', False):
|
||||||
vals['is_company'] = True
|
vals['is_company'] = True
|
||||||
partner = self.create(vals)
|
partner = self.create(vals)
|
||||||
partner.property_account_fiscal_position = self.env['account.fiscal.position'].get_fiscal_position(
|
partner.property_account_fiscal_position = self.env['account.fiscal.position'].get_fiscal_position(
|
||||||
partner.id)
|
partner.id)
|
||||||
return partner
|
return True
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def correct_values(self, vals):
|
def correct_values(self, vals):
|
||||||
|
|
@ -133,6 +135,24 @@ class Partner(models.Model):
|
||||||
raise ValidationError(_("Die Zahlungsbedingung mit dem Code \'%s\' kann nicht zugeordnet werden" % vals[
|
raise ValidationError(_("Die Zahlungsbedingung mit dem Code \'%s\' kann nicht zugeordnet werden" % vals[
|
||||||
'property_payment_term_id']))
|
'property_payment_term_id']))
|
||||||
|
|
||||||
|
if vals.get('property_product_pricelist', False):
|
||||||
|
product_pricelist = self.env['product.pricelist'].search(
|
||||||
|
[('currency_id.name', '=', vals['property_product_pricelist'])])
|
||||||
|
if product_pricelist:
|
||||||
|
vals['property_product_pricelist'] = product_pricelist[0].id
|
||||||
|
else:
|
||||||
|
raise ValidationError(_("Die Preisliste mit der Währung \'%s\' kann nicht zugeordnet werden" % vals[
|
||||||
|
'property_product_pricelist']))
|
||||||
|
|
||||||
|
if vals.get('retail_partner_id', False):
|
||||||
|
retail_partner = self.env['res.partner'].search(
|
||||||
|
[('ref', '=', vals['retail_partner_id'])])
|
||||||
|
if retail_partner:
|
||||||
|
vals['retail_partner_id'] = retail_partner.id
|
||||||
|
else:
|
||||||
|
raise ValidationError(_("Der Händler mit der Internen Referenz \'%s\' kann nicht zugeordnet werden" % vals[
|
||||||
|
'retail_partner_id']))
|
||||||
|
|
||||||
return vals
|
return vals
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
|
|
@ -144,7 +164,8 @@ class Partner(models.Model):
|
||||||
return common_list
|
return common_list
|
||||||
elif self.env.context.get('sst_11', False):
|
elif self.env.context.get('sst_11', False):
|
||||||
common_list.extend(['name', 'ref', 'partner_sector_id', 'comment', 'vat', 'property_payment_term_id',
|
common_list.extend(['name', 'ref', 'partner_sector_id', 'comment', 'vat', 'property_payment_term_id',
|
||||||
'property_pricelist_id', 'date_vat_check', 'active'])
|
'property_pricelist_id', 'date_vat_check', 'active', 'property_product_pricelist',
|
||||||
|
'retail_partner_id'])
|
||||||
return common_list
|
return common_list
|
||||||
else:
|
else:
|
||||||
return super(Partner, self)._get_specified_fields()
|
return super(Partner, self)._get_specified_fields()
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,11 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from odoo import api, fields, models, _
|
from odoo import api, fields, models, _
|
||||||
from odoo.exceptions import ValidationError
|
from odoo.exceptions import ValidationError
|
||||||
|
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||||
|
|
||||||
|
|
||||||
class SaleOrder(models.Model):
|
class SaleOrder(models.Model):
|
||||||
|
|
@ -52,13 +55,22 @@ class SaleOrder(models.Model):
|
||||||
'filename': attachment.name,
|
'filename': attachment.name,
|
||||||
'binary': attachment.datas.decode()
|
'binary': attachment.datas.decode()
|
||||||
})
|
})
|
||||||
|
delivery_date = False
|
||||||
|
for picking_id in order.picking_ids:
|
||||||
|
if not delivery_date:
|
||||||
|
delivery_date = picking_id.scheduled_date
|
||||||
|
elif datetime.strptime(picking_id.scheduled_date, DEFAULT_SERVER_DATETIME_FORMAT) < datetime.strptime(
|
||||||
|
delivery_date, DEFAULT_SERVER_DATETIME_FORMAT):
|
||||||
|
delivery_date = picking_id.scheduled_date
|
||||||
|
|
||||||
order_list.append({
|
order_list.append({
|
||||||
'id': order.id,
|
'id': order.id,
|
||||||
'name': order.name,
|
'name': order.name,
|
||||||
'attachments': attachment_list,
|
'attachments': attachment_list,
|
||||||
'internal_notes': order.internal_notes,
|
'internal_notes': order.internal_notes,
|
||||||
'assembly_notes': order.assembly_notes,
|
'assembly_notes': order.assembly_notes,
|
||||||
'user_id': order.user_id
|
'user_id': order.user_id.name,
|
||||||
|
'delivery_date': delivery_date
|
||||||
})
|
})
|
||||||
return order_list
|
return order_list
|
||||||
|
|
||||||
|
|
@ -80,7 +92,7 @@ class SaleOrder(models.Model):
|
||||||
if key.startswith('delivery_'):
|
if key.startswith('delivery_'):
|
||||||
delivery_vals[key.replace('delivery_', '')] = vals[key]
|
delivery_vals[key.replace('delivery_', '')] = vals[key]
|
||||||
|
|
||||||
delivery_vals = delivery_partner.remove_not_specified_fields(delivery_vals)
|
delivery_vals = delivery_partner.with_context(sst_1=True).remove_not_specified_fields(delivery_vals)
|
||||||
delivery_vals = delivery_partner.correct_values(delivery_vals)
|
delivery_vals = delivery_partner.correct_values(delivery_vals)
|
||||||
delivery_vals['parent_id'] = partner.id
|
delivery_vals['parent_id'] = partner.id
|
||||||
|
|
||||||
|
|
@ -141,6 +153,7 @@ class SaleOrder(models.Model):
|
||||||
lot_id = lot.id
|
lot_id = lot.id
|
||||||
order_lines.append(self.env['sale.order.line'].create({
|
order_lines.append(self.env['sale.order.line'].create({
|
||||||
'order_id': self.id,
|
'order_id': self.id,
|
||||||
|
'name': vals['name'],
|
||||||
'product_id': vals['product_id'],
|
'product_id': vals['product_id'],
|
||||||
'price_unit': vals['price_unit'],
|
'price_unit': vals['price_unit'],
|
||||||
'product_uom_qty': vals['product_uom_qty'],
|
'product_uom_qty': vals['product_uom_qty'],
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,9 @@
|
||||||
<field name="assembly_line_ids" widget="many2many_tags" options="{'no_create': True}"/>
|
<field name="assembly_line_ids" widget="many2many_tags" options="{'no_create': True}"/>
|
||||||
</field>
|
</field>
|
||||||
<xpath expr="//page[@name='general_information']/group" position="inside">
|
<xpath expr="//page[@name='general_information']/group" position="inside">
|
||||||
<label for="notes"/>
|
<group name="note" string="Notizen">
|
||||||
<field name="notes"/>
|
<field name="notes"/>
|
||||||
|
</group>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,14 @@
|
||||||
<field name="company"/>
|
<field name="company"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
|
<xpath expr="//page[@name='internal_notes']/field[@name='comment']" position="replace">
|
||||||
|
<group name="description">
|
||||||
|
<group string="Interner Hinweis">
|
||||||
|
<field name="comment" placeholder="Internal note..."/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//page[@name='internal_notes']" position="inside">
|
<xpath expr="//page[@name='internal_notes']" position="inside">
|
||||||
<group name="general">
|
<group name="general">
|
||||||
<group name="portal_info" string="Portal Info">
|
<group name="portal_info" string="Portal Info">
|
||||||
|
|
@ -33,9 +41,9 @@
|
||||||
<field name="info_uid"/>
|
<field name="info_uid"/>
|
||||||
<field name="portal_id"/>
|
<field name="portal_id"/>
|
||||||
<field name="portal_export_pending"/>
|
<field name="portal_export_pending"/>
|
||||||
|
<field name="line_ids" widget="many2many_tags"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<field name="line_ids"/>
|
|
||||||
</xpath>
|
</xpath>
|
||||||
|
|
||||||
<xpath expr="//field[@name='category_id']" position="after">
|
<xpath expr="//field[@name='category_id']" position="after">
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,13 @@
|
||||||
</field>
|
</field>
|
||||||
<field name="note" position="after">
|
<field name="note" position="after">
|
||||||
<separator/>
|
<separator/>
|
||||||
<field name="internal_notes"/>
|
<group name="internal_notes" string="Notizen">
|
||||||
|
<field name="internal_notes"/>
|
||||||
|
</group>
|
||||||
<separator/>
|
<separator/>
|
||||||
<field name="assembly_notes"/>
|
<group name="assembly_notes" string="Notizen">
|
||||||
|
<field name="assembly_notes"/>
|
||||||
|
</group>
|
||||||
</field>
|
</field>
|
||||||
<xpath expr="//field[@name='order_line']/form//field[@name='product_id']" position="after">
|
<xpath expr="//field[@name='order_line']/form//field[@name='product_id']" position="after">
|
||||||
<field name="lot_id"/>
|
<field name="lot_id"/>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# datenpol gmbh
|
||||||
|
# Copyright (C) 2013-TODAY datenpol gmbh (<http://www.datenpol.at/>)
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
from . import models
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# datenpol gmbh
|
||||||
|
# Copyright (C) 2013-TODAY datenpol gmbh (<http://www.datenpol.at/>)
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# noinspection PyStatementEffect
|
||||||
|
{
|
||||||
|
'name': 'Generates Invoice for multiple orders',
|
||||||
|
'category': 'Sale',
|
||||||
|
'version': '11.0.1.0.0',
|
||||||
|
'description': """Generates Invoice for multiple orders""",
|
||||||
|
'author': 'datenpol gmbh',
|
||||||
|
'website': 'http://www.datenpol.at/',
|
||||||
|
'depends': [
|
||||||
|
'sale',
|
||||||
|
],
|
||||||
|
'data': [
|
||||||
|
'views/res_partner_views.xml',
|
||||||
|
'views/sale_views.xml',
|
||||||
|
'views/account_views.xml',
|
||||||
|
'security/ir.model.access.csv',
|
||||||
|
],
|
||||||
|
'installable': True,
|
||||||
|
'auto_install': False,
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 20014-2016 datenpol gmbh (<http://www.datenpol.at/>).
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
from . import sale
|
||||||
|
from . import account
|
||||||
|
from . import res_partner
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# datenpol gmbh
|
||||||
|
# Copyright (C) 2013-TODAY datenpol gmbh (<http://www.datenpol.at/>)
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
from odoo import models
|
||||||
|
|
||||||
|
|
||||||
|
class AccountInvoiceLine(models.Model):
|
||||||
|
_inherit = 'account.invoice.line'
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# datenpol gmbh
|
||||||
|
# Copyright (C) 2013-TODAY datenpol gmbh (<http://www.datenpol.at/>)
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class Partner(models.Model):
|
||||||
|
_inherit = 'res.partner'
|
||||||
|
|
||||||
|
retailer = fields.Boolean(string='Ist ein Händler')
|
||||||
|
retail_partner_id = fields.Many2one(comodel_name='res.partner', string='Händler', domain=[('retailer', '=', True)],
|
||||||
|
help='Wenn ein Händler existiert, dann passiert die Verrechnung über den Händler')
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def address_get(self, adr_pref=None):
|
||||||
|
res = super(Partner, self).address_get(adr_pref=adr_pref)
|
||||||
|
|
||||||
|
for record in self:
|
||||||
|
if record.commercial_partner_id.retail_partner_id:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# datenpol gmbh
|
||||||
|
# Copyright (C) 2013-TODAY datenpol gmbh (<http://www.datenpol.at/>)
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
# published by the Free Software Foundation, either version 3 of the
|
||||||
|
# License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
from odoo import api, fields, models
|
||||||
|
|
||||||
|
|
||||||
|
class SaleLayoutCategory(models.Model):
|
||||||
|
_inherit = 'sale.layout_category'
|
||||||
|
|
||||||
|
order_id = fields.Many2one(comodel_name='sale.order')
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def name_search(self, name, args=None, operator='ilike', limit=100):
|
||||||
|
res = super(SaleLayoutCategory, self).name_search(name, args=args, operator=operator, limit=limit)
|
||||||
|
return res
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
|
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
<record id="res_partner_form_view" model="ir.ui.view">
|
||||||
|
<field name="name">res_partner_form_view</field>
|
||||||
|
<field name="model">res.partner</field>
|
||||||
|
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//page[@name='sales_purchases']//field[@name='customer']" position="after">
|
||||||
|
<field name="retailer"/>
|
||||||
|
</xpath>
|
||||||
|
<field name="lang" position="after">
|
||||||
|
<field name="retail_partner_id"/>
|
||||||
|
</field>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<odoo>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</odoo>
|
||||||
|
|
@ -130,6 +130,8 @@ class Config():
|
||||||
'report_intrastat',
|
'report_intrastat',
|
||||||
'dp_sale_hide_discount',
|
'dp_sale_hide_discount',
|
||||||
'connector',
|
'connector',
|
||||||
|
'dp_intercompany_invoicing',
|
||||||
|
'dp_retail_invoice'
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue