Feedback 1114, 1139, 1147, 1164, 1166
							parent
							
								
									291deedcc2
								
							
						
					
					
						commit
						f6181f82ef
					
				|  | @ -23,14 +23,13 @@ values = { | |||
|     "phone": "+43 564564", | ||||
|     "mobile": "+43 677 564564", | ||||
|     "endkunde": True, | ||||
|     "portal_id": "6", | ||||
|     "portal_id": "9", | ||||
|     "company": "Bier AG", | ||||
|     "info_uid": "habe keine", | ||||
|     "info_kundennr": "K1234", | ||||
|     "email": "max@musterman.at", | ||||
|     "line_ids": ["12345"], | ||||
|     "opt_out": True, | ||||
|     "vat": False, | ||||
|     "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.login(db, user, pw) | ||||
| 
 | ||||
| values = { | ||||
|     "line": "L1", | ||||
|     "state": "approved", | ||||
|     "limit": 8 | ||||
| } | ||||
| 
 | ||||
| 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) | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ odoo = odoorpc.ODOO(host, port=port) | |||
| odoo.login(db, user, pw) | ||||
| 
 | ||||
| values = { | ||||
|     "default_code": "02", | ||||
|     "default_code": "04", | ||||
|     "name": "Produktname", | ||||
|     "length": 45.01, | ||||
|     "width": 13.45, | ||||
|  | @ -25,10 +25,12 @@ values = { | |||
|     "notes": "notes", | ||||
|     "material_type_id": "Holz", | ||||
|     "categ_id": "all", | ||||
|     "intrastat_id": "Code", | ||||
|     "intrastat_id": "TEst", | ||||
|     "sale_ok": True, | ||||
|     "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'] | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| # -*- coding: utf-8 -*- | ||||
| import odoorpc | ||||
| from urllib.parse import urlparse | ||||
| 
 | ||||
| host = 'localhost' | ||||
| port = 8080 | ||||
|  | @ -11,23 +12,30 @@ odoo = odoorpc.ODOO(host, port=port) | |||
| odoo.login(db, user, pw) | ||||
| 
 | ||||
| values = { | ||||
|     "name": "Company", | ||||
|     "name": "Company2", | ||||
|     "street": "Elterleinplatz 11", | ||||
|     "street2": "Teststrasse 30", | ||||
|     "zip": 1170, | ||||
|     "city": "Wien", | ||||
|     "country_id": "AT", | ||||
|     "fax": "+43 55567051", | ||||
|     "phone": "+43 5556705", | ||||
|     "mobile": "+43 446783", | ||||
|     "endkunde": True, | ||||
|     "portal_id": "31", | ||||
|     "portal_id": "32", | ||||
|     "email": "company@test.at", | ||||
|     "opt_out": True, | ||||
|     "ref": "A144S3", | ||||
|     "ref": "A144S4", | ||||
|     "partner_sector_id": "Test", | ||||
|     "comment": "comment", | ||||
|     "vat": False, | ||||
|     "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'] | ||||
|  |  | |||
|  | @ -11,8 +11,7 @@ class ProductTemplate(models.Model): | |||
|     def taxes_by_company(self, field, company_id, match_tax_ids=None): | ||||
|         taxes_ids = [] | ||||
|         if match_tax_ids is None: | ||||
|             taxes_ids = self.env['ir.values'].get_default( | ||||
|                 'product.template', field, company_id=company_id) | ||||
|             taxes_ids = self.env['ir.default'].get('product.template', field, company_id=company_id) | ||||
|         # If None: return default taxes if []: return empty list | ||||
|         if not match_tax_ids: | ||||
|             return isinstance(taxes_ids, list) and taxes_ids or [] | ||||
|  |  | |||
|  | @ -119,7 +119,7 @@ class ProductTemplate(models.Model): | |||
|     def _get_specified_fields(self): | ||||
|         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', | ||||
|                 'height', 'categ_id', 'can_be_sold_unconfigured'] | ||||
|                 'height', 'categ_id', 'can_be_sold_unconfigured', 'image'] | ||||
| 
 | ||||
| 
 | ||||
| class ProductCategory(models.Model): | ||||
|  |  | |||
|  | @ -56,6 +56,7 @@ class Partner(models.Model): | |||
|     dat_vat_check = fields.Date(string='Datum letzte UID-Prüfung') | ||||
|     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') | ||||
| 
 | ||||
|     _sql_constraints = [ | ||||
|         ('ref_uniq', 'unique(ref)', 'Die Interne Referenz muss eindeutig sein'), | ||||
|  | @ -68,7 +69,8 @@ class Partner(models.Model): | |||
|         vals = self.correct_values(vals) | ||||
|         if not vals.get('active', False): | ||||
|             vals['active'] = False | ||||
|         return self.create(vals) | ||||
|         self.create(vals) | ||||
|         return True | ||||
| 
 | ||||
|     @api.model | ||||
|     def pg_create_company(self, vals): | ||||
|  | @ -79,14 +81,14 @@ class Partner(models.Model): | |||
|             if not partner.is_company: | ||||
|                 raise ValidationError( | ||||
|                     _("Der Partner mit der Internen Referenz '%s' ist kein Unternehmen" % vals['ref'])) | ||||
|             partner = self.write(vals) | ||||
|             self.write(vals) | ||||
|         else: | ||||
|             if not vals.get('is_company', False): | ||||
|                 vals['is_company'] = True | ||||
|             partner = self.create(vals) | ||||
|             partner.property_account_fiscal_position = self.env['account.fiscal.position'].get_fiscal_position( | ||||
|                 partner.id) | ||||
|         return partner | ||||
|         return True | ||||
| 
 | ||||
|     @api.model | ||||
|     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[ | ||||
|                     '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 | ||||
| 
 | ||||
|     @api.model | ||||
|  | @ -144,7 +164,8 @@ class Partner(models.Model): | |||
|             return common_list | ||||
|         elif self.env.context.get('sst_11', False): | ||||
|             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 | ||||
|         else: | ||||
|             return super(Partner, self)._get_specified_fields() | ||||
|  |  | |||
|  | @ -18,8 +18,11 @@ | |||
| #    along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| ############################################################################## | ||||
| from datetime import datetime | ||||
| 
 | ||||
| from odoo import api, fields, models, _ | ||||
| from odoo.exceptions import ValidationError | ||||
| from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT | ||||
| 
 | ||||
| 
 | ||||
| class SaleOrder(models.Model): | ||||
|  | @ -52,13 +55,22 @@ class SaleOrder(models.Model): | |||
|                     'filename': attachment.name, | ||||
|                     '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({ | ||||
|                 'id': order.id, | ||||
|                 'name': order.name, | ||||
|                 'attachments': attachment_list, | ||||
|                 'internal_notes': order.internal_notes, | ||||
|                 'assembly_notes': order.assembly_notes, | ||||
|                 'user_id': order.user_id | ||||
|                 'user_id': order.user_id.name, | ||||
|                 'delivery_date': delivery_date | ||||
|             }) | ||||
|         return order_list | ||||
| 
 | ||||
|  | @ -80,7 +92,7 @@ class SaleOrder(models.Model): | |||
|             if key.startswith('delivery_'): | ||||
|                 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['parent_id'] = partner.id | ||||
| 
 | ||||
|  | @ -141,6 +153,7 @@ class SaleOrder(models.Model): | |||
|                 lot_id = lot.id | ||||
|             order_lines.append(self.env['sale.order.line'].create({ | ||||
|                 'order_id': self.id, | ||||
|                 'name': vals['name'], | ||||
|                 'product_id': vals['product_id'], | ||||
|                 'price_unit': vals['price_unit'], | ||||
|                 'product_uom_qty': vals['product_uom_qty'], | ||||
|  |  | |||
|  | @ -19,8 +19,9 @@ | |||
|                 <field name="assembly_line_ids" widget="many2many_tags" options="{'no_create': True}"/> | ||||
|             </field> | ||||
|             <xpath expr="//page[@name='general_information']/group" position="inside"> | ||||
|                 <label for="notes"/> | ||||
|                 <field name="notes"/> | ||||
|                 <group name="note" string="Notizen"> | ||||
|                     <field name="notes"/> | ||||
|                 </group> | ||||
|             </xpath> | ||||
|         </field> | ||||
|     </record> | ||||
|  |  | |||
|  | @ -26,6 +26,14 @@ | |||
|                 <field name="company"/> | ||||
|             </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"> | ||||
|                 <group name="general"> | ||||
|                     <group name="portal_info" string="Portal Info"> | ||||
|  | @ -33,9 +41,9 @@ | |||
|                         <field name="info_uid"/> | ||||
|                         <field name="portal_id"/> | ||||
|                         <field name="portal_export_pending"/> | ||||
|                         <field name="line_ids" widget="many2many_tags"/> | ||||
|                     </group> | ||||
|                 </group> | ||||
|                 <field name="line_ids"/> | ||||
|             </xpath> | ||||
| 
 | ||||
|             <xpath expr="//field[@name='category_id']" position="after"> | ||||
|  |  | |||
|  | @ -13,9 +13,13 @@ | |||
|             </field> | ||||
|             <field name="note" position="after"> | ||||
|                 <separator/> | ||||
|                 <field name="internal_notes"/> | ||||
|                 <group name="internal_notes" string="Notizen"> | ||||
|                     <field name="internal_notes"/> | ||||
|                 </group> | ||||
|                 <separator/> | ||||
|                 <field name="assembly_notes"/> | ||||
|                 <group name="assembly_notes" string="Notizen"> | ||||
|                     <field name="assembly_notes"/> | ||||
|                 </group> | ||||
|             </field> | ||||
|             <xpath expr="//field[@name='order_line']/form//field[@name='product_id']" position="after"> | ||||
|                 <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', | ||||
|             'dp_sale_hide_discount', | ||||
|             'connector', | ||||
|             'dp_intercompany_invoicing', | ||||
|             'dp_retail_invoice' | ||||
| 
 | ||||
|         ] | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue