diff --git a/dev/scripts/interfaces/sst01_portal_create_partner.py b/dev/scripts/interfaces/sst01_portal_create_partner.py
index 31cadf94..d139227c 100755
--- a/dev/scripts/interfaces/sst01_portal_create_partner.py
+++ b/dev/scripts/interfaces/sst01_portal_create_partner.py
@@ -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"
}
diff --git a/dev/scripts/interfaces/sst03_pg_create_quotation.py b/dev/scripts/interfaces/sst03_pg_create_quotation.py
index 7eecb65d..89128a73 100755
--- a/dev/scripts/interfaces/sst03_pg_create_quotation.py
+++ b/dev/scripts/interfaces/sst03_pg_create_quotation.py
@@ -19,8 +19,8 @@ values = {
"line_id": "12345",
"portal_id": "111111",
"portal_delivery_id": "222222",
- "delivery_firstname": "Ahmed",
- "delivery_lastname": "Aly",
+ "delivery_firstname": "Huber",
+ "delivery_lastname": "Bauer",
"delivery_midname": False,
"delivery_street": "Zeilergasse 7-11",
"delivery_street2": False,
@@ -29,18 +29,19 @@ values = {
"delivery_country_id": "AT",
"delivery_fax": False,
"delivery_phone": False,
- "delivery_mobile": "+43 676 5765575",
+ "delivery_mobile": "+43 676 5556705",
"delivery_company": False,
"attachment_ids": [{
"filename": "logo.png",
"binary": "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"
}],
"order_lines": [{
+ "name": "Beschreibung der Zeile",
"product_id": "01",
"price_unit": 50.00,
"product_uom_qty": 4.0,
"lot_id": {
- "name": "AAA012",
+ "name": "AAA0123",
"notes": "notes",
"attachment_ids": [{
"filename": "logo.gif",
diff --git a/dev/scripts/interfaces/sst04_pg_get_orders.py b/dev/scripts/interfaces/sst04_pg_get_orders.py
index 8635c47f..afb07eab 100755
--- a/dev/scripts/interfaces/sst04_pg_get_orders.py
+++ b/dev/scripts/interfaces/sst04_pg_get_orders.py
@@ -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)
diff --git a/dev/scripts/interfaces/sst10_create_product.py b/dev/scripts/interfaces/sst10_create_product.py
index 78ee6589..04c5be75 100755
--- a/dev/scripts/interfaces/sst10_create_product.py
+++ b/dev/scripts/interfaces/sst10_create_product.py
@@ -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']
diff --git a/dev/scripts/interfaces/sst11_pg_create_company.py b/dev/scripts/interfaces/sst11_pg_create_company.py
index 62531b2a..4177571b 100755
--- a/dev/scripts/interfaces/sst11_pg_create_company.py
+++ b/dev/scripts/interfaces/sst11_pg_create_company.py
@@ -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']
diff --git a/ext/3rd-party-addons/product_tax_multicompany_default/models/product.py b/ext/3rd-party-addons/product_tax_multicompany_default/models/product.py
index 38344a6e..a9b6e75e 100644
--- a/ext/3rd-party-addons/product_tax_multicompany_default/models/product.py
+++ b/ext/3rd-party-addons/product_tax_multicompany_default/models/product.py
@@ -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 []
diff --git a/ext/custom-addons/dp_custom/models/product.py b/ext/custom-addons/dp_custom/models/product.py
index 4d3e71d0..8945ad25 100644
--- a/ext/custom-addons/dp_custom/models/product.py
+++ b/ext/custom-addons/dp_custom/models/product.py
@@ -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):
diff --git a/ext/custom-addons/dp_custom/models/res_partner.py b/ext/custom-addons/dp_custom/models/res_partner.py
index 7e75783f..f7193201 100644
--- a/ext/custom-addons/dp_custom/models/res_partner.py
+++ b/ext/custom-addons/dp_custom/models/res_partner.py
@@ -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()
diff --git a/ext/custom-addons/dp_custom/models/sale.py b/ext/custom-addons/dp_custom/models/sale.py
index 8bc7203d..c2d49d85 100644
--- a/ext/custom-addons/dp_custom/models/sale.py
+++ b/ext/custom-addons/dp_custom/models/sale.py
@@ -18,8 +18,11 @@
# along with this program. If not, see .
#
##############################################################################
+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'],
diff --git a/ext/custom-addons/dp_custom/views/product_views.xml b/ext/custom-addons/dp_custom/views/product_views.xml
index 7dcd6126..65e31e7e 100644
--- a/ext/custom-addons/dp_custom/views/product_views.xml
+++ b/ext/custom-addons/dp_custom/views/product_views.xml
@@ -19,8 +19,9 @@
-
-
+
+
+
diff --git a/ext/custom-addons/dp_custom/views/res_partner_views.xml b/ext/custom-addons/dp_custom/views/res_partner_views.xml
index 51bbc278..15e33f06 100644
--- a/ext/custom-addons/dp_custom/views/res_partner_views.xml
+++ b/ext/custom-addons/dp_custom/views/res_partner_views.xml
@@ -26,6 +26,14 @@
+
+
+
+
+
+
+
+
@@ -33,9 +41,9 @@
+
-
diff --git a/ext/custom-addons/dp_custom/views/sale_views.xml b/ext/custom-addons/dp_custom/views/sale_views.xml
index 6afc32c2..6975da91 100644
--- a/ext/custom-addons/dp_custom/views/sale_views.xml
+++ b/ext/custom-addons/dp_custom/views/sale_views.xml
@@ -13,9 +13,13 @@
-
+
+
+
-
+
+
+
diff --git a/ext/custom-addons/dp_retail_invoice/__init__.py b/ext/custom-addons/dp_retail_invoice/__init__.py
new file mode 100644
index 00000000..15bca215
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/__init__.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# datenpol gmbh
+# Copyright (C) 2013-TODAY datenpol gmbh ()
+#
+# 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 .
+#
+##############################################################################
+
+from . import models
diff --git a/ext/custom-addons/dp_retail_invoice/__manifest__.py b/ext/custom-addons/dp_retail_invoice/__manifest__.py
new file mode 100644
index 00000000..e16c3e1a
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/__manifest__.py
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# datenpol gmbh
+# Copyright (C) 2013-TODAY datenpol gmbh ()
+#
+# 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 .
+#
+##############################################################################
+
+
+# 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,
+}
diff --git a/ext/custom-addons/dp_retail_invoice/models/__init__.py b/ext/custom-addons/dp_retail_invoice/models/__init__.py
new file mode 100644
index 00000000..d1f337f8
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/models/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 20014-2016 datenpol gmbh ().
+#
+# 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 .
+#
+##############################################################################
+
+from . import sale
+from . import account
+from . import res_partner
diff --git a/ext/custom-addons/dp_retail_invoice/models/account.py b/ext/custom-addons/dp_retail_invoice/models/account.py
new file mode 100644
index 00000000..1ec74734
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/models/account.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# datenpol gmbh
+# Copyright (C) 2013-TODAY datenpol gmbh ()
+#
+# 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 .
+#
+##############################################################################
+from odoo import models
+
+
+class AccountInvoiceLine(models.Model):
+ _inherit = 'account.invoice.line'
diff --git a/ext/custom-addons/dp_retail_invoice/models/res_partner.py b/ext/custom-addons/dp_retail_invoice/models/res_partner.py
new file mode 100644
index 00000000..41b6d32f
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/models/res_partner.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# datenpol gmbh
+# Copyright (C) 2013-TODAY datenpol gmbh ()
+#
+# 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 .
+#
+##############################################################################
+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
diff --git a/ext/custom-addons/dp_retail_invoice/models/sale.py b/ext/custom-addons/dp_retail_invoice/models/sale.py
new file mode 100644
index 00000000..d9e90447
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/models/sale.py
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# datenpol gmbh
+# Copyright (C) 2013-TODAY datenpol gmbh ()
+#
+# 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 .
+#
+##############################################################################
+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
diff --git a/ext/custom-addons/dp_retail_invoice/security/ir.model.access.csv b/ext/custom-addons/dp_retail_invoice/security/ir.model.access.csv
new file mode 100644
index 00000000..97dd8b91
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/security/ir.model.access.csv
@@ -0,0 +1 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
diff --git a/ext/custom-addons/dp_retail_invoice/static/description/icon.png b/ext/custom-addons/dp_retail_invoice/static/description/icon.png
new file mode 100644
index 00000000..8387d765
Binary files /dev/null and b/ext/custom-addons/dp_retail_invoice/static/description/icon.png differ
diff --git a/ext/custom-addons/dp_retail_invoice/views/account_views.xml b/ext/custom-addons/dp_retail_invoice/views/account_views.xml
new file mode 100644
index 00000000..b9720235
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/views/account_views.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/ext/custom-addons/dp_retail_invoice/views/res_partner_views.xml b/ext/custom-addons/dp_retail_invoice/views/res_partner_views.xml
new file mode 100644
index 00000000..71508fba
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/views/res_partner_views.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ res_partner_form_view
+ res.partner
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ext/custom-addons/dp_retail_invoice/views/sale_views.xml b/ext/custom-addons/dp_retail_invoice/views/sale_views.xml
new file mode 100644
index 00000000..1eacf6fe
--- /dev/null
+++ b/ext/custom-addons/dp_retail_invoice/views/sale_views.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/setup/lib/config.py b/setup/lib/config.py
index 8486f132..4273e835 100644
--- a/setup/lib/config.py
+++ b/setup/lib/config.py
@@ -130,6 +130,8 @@ class Config():
'report_intrastat',
'dp_sale_hide_discount',
'connector',
+ 'dp_intercompany_invoicing',
+ 'dp_retail_invoice'
]