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