Fall 4434: Sammelrechnung
parent
3f644e084e
commit
db656cbaa2
|
|
@ -35,7 +35,6 @@
|
||||||
'views/res_partner_views.xml',
|
'views/res_partner_views.xml',
|
||||||
'views/sale_views.xml',
|
'views/sale_views.xml',
|
||||||
'views/account_views.xml',
|
'views/account_views.xml',
|
||||||
'security/ir.model.access.csv',
|
|
||||||
],
|
],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'auto_install': False,
|
'auto_install': False,
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,4 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from . import sale
|
from . import sale
|
||||||
from . import account
|
|
||||||
from . import res_partner
|
from . import res_partner
|
||||||
|
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
# -*- 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'
|
|
||||||
|
|
@ -34,6 +34,6 @@ class Partner(models.Model):
|
||||||
|
|
||||||
for record in self:
|
for record in self:
|
||||||
if record.commercial_partner_id.retail_partner_id:
|
if record.commercial_partner_id.retail_partner_id:
|
||||||
pass
|
res.update({'invoice': record.commercial_partner_id.retail_partner_id.id})
|
||||||
|
|
||||||
return res
|
return res
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,20 @@ class SaleLayoutCategory(models.Model):
|
||||||
|
|
||||||
order_id = fields.Many2one(comodel_name='sale.order')
|
order_id = fields.Many2one(comodel_name='sale.order')
|
||||||
|
|
||||||
@api.model
|
|
||||||
def name_search(self, name, args=None, operator='ilike', limit=100):
|
class SaleOrderLine(models.Model):
|
||||||
res = super(SaleLayoutCategory, self).name_search(name, args=args, operator=operator, limit=limit)
|
_inherit = 'sale.order.line'
|
||||||
|
|
||||||
|
layout_category_id = fields.Many2one(domain=[('order_id', '=', False)])
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def _prepare_invoice_line(self, qty):
|
||||||
|
res = super(SaleOrderLine, self)._prepare_invoice_line(qty)
|
||||||
|
layout_category_id = self.env['sale.layout_category'].search([('order_id', '=', self.order_id.id)])
|
||||||
|
if not layout_category_id:
|
||||||
|
layout_category_id = self.env['sale.layout_category'].create({
|
||||||
|
'order_id': self.order_id.id,
|
||||||
|
'name': self.order_id.name
|
||||||
|
})
|
||||||
|
res.update({'layout_category_id': layout_category_id.id})
|
||||||
return res
|
return res
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
|
||||||
|
|
|
@ -1,7 +1,17 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
|
<record id="account_invoice_form_view" model="ir.ui.view">
|
||||||
|
<field name="name">account_invoice_form_view</field>
|
||||||
|
<field name="model">account.invoice</field>
|
||||||
|
<field name="inherit_id" ref="account.invoice_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='invoice_line_ids']/tree//field[@name='layout_category_id']"
|
||||||
|
position="attributes">
|
||||||
|
<attribute name="options">{'no_create': True}</attribute>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,30 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<odoo>
|
<odoo>
|
||||||
|
|
||||||
|
<record id="sale_layout_category_form_view" model="ir.ui.view">
|
||||||
|
<field name="name">sale_layout_category_form_view</field>
|
||||||
|
<field name="model">sale.layout_category</field>
|
||||||
|
<field name="inherit_id" ref="sale.report_configuration_form_view"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<field name="name" position="after">
|
||||||
|
<field name="order_id"/>
|
||||||
|
</field>
|
||||||
|
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="sale_order_form_view" model="ir.ui.view">
|
||||||
|
<field name="name">sale_order_form_view</field>
|
||||||
|
<field name="model">sale.order</field>
|
||||||
|
<field name="inherit_id" ref="sale.view_order_form"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//field[@name='order_line']/form//field[@name='layout_category_id']" position="attributes">
|
||||||
|
<attribute name="options">{'no_create': True}</attribute>
|
||||||
|
</xpath>
|
||||||
|
<xpath expr="//field[@name='order_line']/tree//field[@name='layout_category_id']" position="attributes">
|
||||||
|
<attribute name="options">{'no_create': True}</attribute>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
</odoo>
|
</odoo>
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,16 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
class Config():
|
|
||||||
|
class Config(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.dump_file = 'odoo_backup.dump'
|
self.dump_file = 'odoo_backup.dump'
|
||||||
|
|
||||||
self.module_name = None
|
self.module_name = None
|
||||||
self.lang = 'de_DE' # de_DE, en_US
|
self.lang = 'de_DE' # de_DE, en_US
|
||||||
self.default_sales_tax = 'Mehrwertsteuer 20%'
|
self.default_sales_tax = 'Mehrwertsteuer 20%'
|
||||||
self.default_supplier_tax = 'Vorsteuer 20%'
|
self.default_supplier_tax = 'Vorsteuer 20%'
|
||||||
self.price_decimals = 2 # Nachkommastellen Preis
|
self.price_decimals = 2 # Nachkommastellen Preis
|
||||||
self.uom_decimals = 3 # Nachkommastellen Mengeneinheiten
|
self.uom_decimals = 3 # Nachkommastellen Mengeneinheiten
|
||||||
|
|
||||||
self.load_languages = ['en_US']
|
self.load_languages = ['en_US']
|
||||||
|
|
||||||
|
|
@ -31,9 +32,9 @@ class Config():
|
||||||
|
|
||||||
# Aktive Steuerzuordnungen
|
# Aktive Steuerzuordnungen
|
||||||
self.valid_fiscal_positions = [
|
self.valid_fiscal_positions = [
|
||||||
#'Lieferant EU (ohne Ust-ID)',
|
# 'Lieferant EU (ohne Ust-ID)',
|
||||||
#'Lieferant EU Unternehmen (mit USt-ID)',
|
# 'Lieferant EU Unternehmen (mit USt-ID)',
|
||||||
#'Lieferant Ausland',
|
# 'Lieferant Ausland',
|
||||||
'Kunde Ausland',
|
'Kunde Ausland',
|
||||||
'Kunde EU (ohne USt-ID)',
|
'Kunde EU (ohne USt-ID)',
|
||||||
'Kunde EU Unternehmen (mit USt-ID)',
|
'Kunde EU Unternehmen (mit USt-ID)',
|
||||||
|
|
@ -45,39 +46,39 @@ class Config():
|
||||||
'group_multi_company': True,
|
'group_multi_company': True,
|
||||||
|
|
||||||
# Einstellungen Verkauf
|
# Einstellungen Verkauf
|
||||||
'group_product_variant': False, # Produkte können mehrere Attribute haben, die Varianten definieren
|
'group_product_variant': False, # Produkte können mehrere Attribute haben, die Varianten definieren
|
||||||
'group_uom': True, # Verwende Mengeneinheiten
|
'group_uom': True, # Verwende Mengeneinheiten
|
||||||
'group_discount_per_so_line': True, # Rabatt auf Verkaufszeilen
|
'group_discount_per_so_line': True, # Rabatt auf Verkaufszeilen
|
||||||
'multi_sales_price': True, # Mehrere Verkaufspreise pro Produkt
|
'multi_sales_price': True, # Mehrere Verkaufspreise pro Produkt
|
||||||
'multi_sales_price_method': 'percentage',
|
'multi_sales_price_method': 'percentage',
|
||||||
# [percentage] Multiple prices per product (e.g. customer segments, currencies)
|
# [percentage] Multiple prices per product (e.g. customer segments, currencies)
|
||||||
# [formula] rices computed from formulas (discounts, margins, roundings)
|
# [formula] rices computed from formulas (discounts, margins, roundings)
|
||||||
'module_sale_margin': False,
|
'module_sale_margin': False,
|
||||||
'use_sale_note': True,
|
'use_sale_note': True,
|
||||||
'group_sale_layout': False,
|
'group_sale_layout': True,
|
||||||
'group_proforma_sales': True,
|
'group_proforma_sales': True,
|
||||||
'group_sale_delivery_address': True, # Verschiedene Adressen für Rechnung und Lieferung
|
'group_sale_delivery_address': True, # Verschiedene Adressen für Rechnung und Lieferung
|
||||||
'group_warning_sale': False,
|
'group_warning_sale': False,
|
||||||
'auto_done_setting': False,
|
'auto_done_setting': False,
|
||||||
'module_delivery': True, # Für Intrastat benötigt
|
'module_delivery': True, # Für Intrastat benötigt
|
||||||
'group_display_incoterm': True,
|
'group_display_incoterm': True,
|
||||||
'module_sale_order_dates': False,
|
'module_sale_order_dates': False,
|
||||||
'group_route_so_lines': False,
|
'group_route_so_lines': False,
|
||||||
|
|
||||||
# Einstellungen Lager
|
# Einstellungen Lager
|
||||||
'group_warning_stock': False,
|
'group_warning_stock': False,
|
||||||
'group_stock_production_lot': True, # Verfolgen Sie Los- und Seriennummern
|
'group_stock_production_lot': True, # Verfolgen Sie Los- und Seriennummern
|
||||||
'default_picking_policy': 'direct',
|
'default_picking_policy': 'direct',
|
||||||
'group_stock_multi_locations': False,
|
'group_stock_multi_locations': False,
|
||||||
'group_stock_multi_warehouses': False,
|
'group_stock_multi_warehouses': False,
|
||||||
'group_stock_adv_location': False, # Advanced routing of products using rules
|
'group_stock_adv_location': False, # Advanced routing of products using rules
|
||||||
'use_security_lead': False,
|
'use_security_lead': False,
|
||||||
'security_lead': 0,
|
'security_lead': 0,
|
||||||
|
|
||||||
# Einstellungen Finanzen
|
# Einstellungen Finanzen
|
||||||
'tax_calculation_rounding_method': 'round_per_line',
|
'tax_calculation_rounding_method': 'round_per_line',
|
||||||
'vat_check_vies': True,
|
'vat_check_vies': True,
|
||||||
'group_multi_currency': True, # Multiwährungsfunktion aktivieren
|
'group_multi_currency': True, # Multiwährungsfunktion aktivieren
|
||||||
'module_account_reports_followup': False,
|
'module_account_reports_followup': False,
|
||||||
'group_warning_account': False,
|
'group_warning_account': False,
|
||||||
|
|
||||||
|
|
@ -88,8 +89,8 @@ class Config():
|
||||||
'manufacturing_lead': 0,
|
'manufacturing_lead': 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
self.removal_strategy = 'fifo' #[fifo], [lifo], [fefo]
|
self.removal_strategy = 'fifo' # [fifo], [lifo], [fefo]
|
||||||
self.stock_cost_method = 'standard' # [standard], [average], [real]
|
self.stock_cost_method = 'standard' # [standard], [average], [real]
|
||||||
|
|
||||||
self.active_uoms = {
|
self.active_uoms = {
|
||||||
'product.product_uom_unit': 'Stk.',
|
'product.product_uom_unit': 'Stk.',
|
||||||
|
|
@ -137,7 +138,7 @@ class Config():
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
# Setze das Feld "Attachment" im Report (wenn gesetzt wird das PDF in den Anhängen gespeichert)
|
# Setze das Feld "Attachment" im Report (wenn gesetzt wird das PDF in den Anhängen gespeichert)
|
||||||
timestamp = " + '_' + time.strftime('%Y-%m-%d-%H%M') + '.pdf')"
|
timestamp = " + '_' + time.strftime('%Y-%m-%d-%H%M') + '.pdf')"
|
||||||
self.reports = {
|
self.reports = {
|
||||||
'sale.action_report_saleorder': "((object.state in ('draft','sent') and 'KV_' or 'AB_') + object.name" + timestamp,
|
'sale.action_report_saleorder': "((object.state in ('draft','sent') and 'KV_' or 'AB_') + object.name" + timestamp,
|
||||||
|
|
@ -147,27 +148,27 @@ class Config():
|
||||||
|
|
||||||
self.users_file = 'res.users.csv'
|
self.users_file = 'res.users.csv'
|
||||||
|
|
||||||
self.translation_files = [ # Reihenfolge!
|
self.translation_files = [ # Reihenfolge!
|
||||||
#'auto_translated2.po',
|
# 'auto_translated2.po',
|
||||||
'ir.translation.csv',
|
'ir.translation.csv',
|
||||||
#'auto_translated.po',
|
# 'auto_translated.po',
|
||||||
#'auto_translated3.po',
|
# 'auto_translated3.po',
|
||||||
]
|
]
|
||||||
|
|
||||||
self.default_values = [ # ir.values
|
self.default_values = [ # ir.values
|
||||||
# ('product.template', 'type', 'product'),
|
# ('product.template', 'type', 'product'),
|
||||||
#('product.template', 'type', 'service'),
|
# ('product.template', 'type', 'service'),
|
||||||
]
|
]
|
||||||
|
|
||||||
self.order_policy = 'order'
|
self.order_policy = 'order'
|
||||||
|
|
||||||
self.data_updates = {
|
self.data_updates = {
|
||||||
#'mrp.route_warehouse0_manufacture': {'name': 'Produzieren'},
|
# 'mrp.route_warehouse0_manufacture': {'name': 'Produzieren'},
|
||||||
#'purchase.route_warehouse0_buy': {'name': 'Einkaufen'},
|
# 'purchase.route_warehouse0_buy': {'name': 'Einkaufen'},
|
||||||
#'stock.route_warehouse0_mto': {'name': 'Beschaffe von Auftrag'},
|
# 'stock.route_warehouse0_mto': {'name': 'Beschaffe von Auftrag'},
|
||||||
}
|
}
|
||||||
|
|
||||||
self.system_parameters = {
|
self.system_parameters = {
|
||||||
'ir_attachment.location': 'file', # [db] oder [file]
|
'ir_attachment.location': 'file', # [db] oder [file]
|
||||||
'database.expiration_date': '2038-01-19',
|
'database.expiration_date': '2038-01-19',
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue