[MERGE] forward port of branch saas-7 up to 3e639f4
This commit is contained in:
@@ -123,6 +123,8 @@ class AccountFiscalPosition(models.Model):
|
|||||||
if not country_id:
|
if not country_id:
|
||||||
return False
|
return False
|
||||||
base_domain = [('auto_apply', '=', True), ('vat_required', '=', vat_required)]
|
base_domain = [('auto_apply', '=', True), ('vat_required', '=', vat_required)]
|
||||||
|
if self.env.context.get('force_company'):
|
||||||
|
base_domain.append(('company_id', '=', self.env.context.get('force_company')))
|
||||||
null_state_dom = state_domain = [('state_ids', '=', False)]
|
null_state_dom = state_domain = [('state_ids', '=', False)]
|
||||||
null_zip_dom = zip_domain = [('zip_from', '=', 0), ('zip_to', '=', 0)]
|
null_zip_dom = zip_domain = [('zip_from', '=', 0), ('zip_to', '=', 0)]
|
||||||
null_country_dom = [('country_id', '=', False), ('country_group_id', '=', False)]
|
null_country_dom = [('country_id', '=', False), ('country_group_id', '=', False)]
|
||||||
|
|||||||
@@ -234,7 +234,7 @@
|
|||||||
<div class="col-xs-6 o_kanban_primary_right">
|
<div class="col-xs-6 o_kanban_primary_right">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-6">
|
<div class="col-xs-6">
|
||||||
<span title="Balance in Odoo">Balance in Odoo</span>
|
<span title="Balance in Odoo">Balance in GL</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 text-right">
|
<div class="col-xs-6 text-right">
|
||||||
<span><t t-esc="dashboard.account_balance"/></span>
|
<span><t t-esc="dashboard.account_balance"/></span>
|
||||||
|
|||||||
@@ -2,12 +2,30 @@
|
|||||||
-- PostgreSQL database dump
|
-- PostgreSQL database dump
|
||||||
--
|
--
|
||||||
|
|
||||||
|
-- Dumped from database version 9.5.2
|
||||||
|
-- Dumped by pg_dump version 9.5.2
|
||||||
|
|
||||||
SET statement_timeout = 0;
|
SET statement_timeout = 0;
|
||||||
|
SET lock_timeout = 0;
|
||||||
SET client_encoding = 'UTF8';
|
SET client_encoding = 'UTF8';
|
||||||
SET standard_conforming_strings = off;
|
SET standard_conforming_strings = on;
|
||||||
SET check_function_bodies = false;
|
SET check_function_bodies = false;
|
||||||
SET client_min_messages = warning;
|
SET client_min_messages = warning;
|
||||||
SET escape_string_warning = off;
|
SET row_security = off;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
|
||||||
|
|
||||||
|
|
||||||
SET search_path = public, pg_catalog;
|
SET search_path = public, pg_catalog;
|
||||||
|
|
||||||
@@ -16,7 +34,7 @@ SET default_tablespace = '';
|
|||||||
SET default_with_oids = false;
|
SET default_with_oids = false;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: companies; Type: TABLE; Schema: public; Owner: fp; Tablespace:
|
-- Name: companies; Type: TABLE; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE companies (
|
CREATE TABLE companies (
|
||||||
@@ -25,38 +43,27 @@ CREATE TABLE companies (
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.companies OWNER TO fp;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: companies_id_seq; Type: SEQUENCE; Schema: public; Owner: fp
|
-- Name: companies_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE SEQUENCE companies_id_seq
|
CREATE SEQUENCE companies_id_seq
|
||||||
START WITH 1
|
START WITH 1
|
||||||
INCREMENT BY 1
|
INCREMENT BY 1
|
||||||
NO MAXVALUE
|
|
||||||
NO MINVALUE
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
CACHE 1;
|
CACHE 1;
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.companies_id_seq OWNER TO fp;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: companies_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: fp
|
-- Name: companies_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
ALTER SEQUENCE companies_id_seq OWNED BY companies.id;
|
ALTER SEQUENCE companies_id_seq OWNED BY companies.id;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: companies_id_seq; Type: SEQUENCE SET; Schema: public; Owner: fp
|
-- Name: persons; Type: TABLE; Schema: public; Owner: -
|
||||||
--
|
|
||||||
|
|
||||||
SELECT pg_catalog.setval('companies_id_seq', 3, true);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: persons; Type: TABLE; Schema: public; Owner: fp; Tablespace:
|
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE persons (
|
CREATE TABLE persons (
|
||||||
@@ -66,52 +73,41 @@ CREATE TABLE persons (
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.persons OWNER TO fp;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: persons_id_seq; Type: SEQUENCE; Schema: public; Owner: fp
|
-- Name: persons_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE SEQUENCE persons_id_seq
|
CREATE SEQUENCE persons_id_seq
|
||||||
START WITH 1
|
START WITH 1
|
||||||
INCREMENT BY 1
|
INCREMENT BY 1
|
||||||
NO MAXVALUE
|
|
||||||
NO MINVALUE
|
NO MINVALUE
|
||||||
|
NO MAXVALUE
|
||||||
CACHE 1;
|
CACHE 1;
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE public.persons_id_seq OWNER TO fp;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: persons_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: fp
|
-- Name: persons_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
ALTER SEQUENCE persons_id_seq OWNED BY persons.id;
|
ALTER SEQUENCE persons_id_seq OWNED BY persons.id;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: persons_id_seq; Type: SEQUENCE SET; Schema: public; Owner: fp
|
-- Name: id; Type: DEFAULT; Schema: public; Owner: -
|
||||||
--
|
|
||||||
|
|
||||||
SELECT pg_catalog.setval('persons_id_seq', 4, true);
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: id; Type: DEFAULT; Schema: public; Owner: fp
|
|
||||||
--
|
--
|
||||||
|
|
||||||
ALTER TABLE ONLY companies ALTER COLUMN id SET DEFAULT nextval('companies_id_seq'::regclass);
|
ALTER TABLE ONLY companies ALTER COLUMN id SET DEFAULT nextval('companies_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: id; Type: DEFAULT; Schema: public; Owner: fp
|
-- Name: id; Type: DEFAULT; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
ALTER TABLE ONLY persons ALTER COLUMN id SET DEFAULT nextval('persons_id_seq'::regclass);
|
ALTER TABLE ONLY persons ALTER COLUMN id SET DEFAULT nextval('persons_id_seq'::regclass);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Data for Name: companies; Type: TABLE DATA; Schema: public; Owner: fp
|
-- Data for Name: companies; Type: TABLE DATA; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
COPY companies (id, company_name) FROM stdin;
|
COPY companies (id, company_name) FROM stdin;
|
||||||
@@ -122,19 +118,33 @@ COPY companies (id, company_name) FROM stdin;
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Data for Name: persons; Type: TABLE DATA; Schema: public; Owner: fp
|
-- Name: companies_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
SELECT pg_catalog.setval('companies_id_seq', 3, true);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Data for Name: persons; Type: TABLE DATA; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
COPY persons (id, company_id, person_name) FROM stdin;
|
COPY persons (id, company_id, person_name) FROM stdin;
|
||||||
1 1 Fabien
|
1 1 Fabien
|
||||||
2 1 Laurence
|
2 1 Laurence
|
||||||
3 2 Eric
|
3 2 Eric
|
||||||
4 3 Ramsy
|
4 3 Ramzy
|
||||||
\.
|
\.
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: companies_pkey; Type: CONSTRAINT; Schema: public; Owner: fp; Tablespace:
|
-- Name: persons_id_seq; Type: SEQUENCE SET; Schema: public; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
SELECT pg_catalog.setval('persons_id_seq', 4, true);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: companies_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
ALTER TABLE ONLY companies
|
ALTER TABLE ONLY companies
|
||||||
@@ -142,13 +152,23 @@ ALTER TABLE ONLY companies
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: persons_company_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: fp
|
-- Name: persons_company_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
ALTER TABLE ONLY persons
|
ALTER TABLE ONLY persons
|
||||||
ADD CONSTRAINT persons_company_id_fkey FOREIGN KEY (company_id) REFERENCES companies(id);
|
ADD CONSTRAINT persons_company_id_fkey FOREIGN KEY (company_id) REFERENCES companies(id);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: public; Type: ACL; Schema: -; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
REVOKE ALL ON SCHEMA public FROM PUBLIC;
|
||||||
|
REVOKE ALL ON SCHEMA public FROM postgres;
|
||||||
|
GRANT ALL ON SCHEMA public TO postgres;
|
||||||
|
GRANT ALL ON SCHEMA public TO PUBLIC;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- PostgreSQL database dump complete
|
-- PostgreSQL database dump complete
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
Order Date,Order Reference,Supplier,Destination,Pricelist,Order Lines / Product,Order Lines / Quantity
|
"Order Date","Order Reference",Vendor,"Order Lines / Product","Order Lines / Description","Order Lines / Quantity","Order Lines / Product Unit of Measure","Order Lines / Unit Price","Order Lines / Scheduled Date"
|
||||||
2012-12-15,PO00008,ASUSTeK,Stock,Default Purchase Pricelist,ADPT,20
|
2016-12-15,PO00008,ASUSTeK,ADPT,ADPT,20.0,"Unit(s)",13.0,2016-12-15
|
||||||
,,,,,CARD,30
|
,,,CARD,CARD,30,"Unit(s)",876.0,2016-12-15
|
||||||
,,,,,C-Case,40
|
,,,C-Case,C-Case,40,"Unit(s)",20.0,2016-12-15
|
||||||
2012-12-15,PO00009,Axelor,Stock,Default Purchase Pricelist,CD,5
|
2016-12-15,PO00009,Camptocamp,CD,CD,5,"Unit(s)",18.4,2016-12-15
|
||||||
,,,,,CPUa8,15
|
,,,CPUa8,CPUa8,15,"Unit(s)",1910.0,2016-12-15
|
||||||
2012-12-15,PO000010,China Export,Stock,Default Purchase Pricelist,HDD SH-1,10
|
|
||||||
,,,,,HDD SH-2,20
|
|
||||||
,,,,,LAP-CUS,35
|
|
||||||
,,,,,LAP-E5,40
|
|
||||||
|
|||||||
|
@@ -1,6 +1,3 @@
|
|||||||
"Order Reference","Supplier","Destination","Pricelist","Order Lines / Product","Order Lines / Quantity"
|
"Order Reference","Vendor"
|
||||||
"PO000020","ASUSTeK","Stock","Default Purchase Pricelist","ADPT",20
|
"PO000020","ASUSTeK"
|
||||||
,,,,"CARD",30
|
"PO000021","Camptocamp"
|
||||||
,,,,"C-Case",40
|
|
||||||
"PO000021","Axelor","Stock","Default Purchase Pricelist","CD",5
|
|
||||||
,,,,"CPUa8",15
|
|
||||||
|
|||||||
|
@@ -1372,6 +1372,30 @@ class calendar_event(osv.Model):
|
|||||||
('user_id', '=', uid),
|
('user_id', '=', uid),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def _get_message_unread(self):
|
||||||
|
id_map = {x: calendar_id2real_id(x) for x in self.ids}
|
||||||
|
real = self.browse(set(id_map.values()))
|
||||||
|
super(calendar_event, real)._get_message_unread()
|
||||||
|
for event in self:
|
||||||
|
if event.id == id_map[event.id]:
|
||||||
|
continue
|
||||||
|
rec = self.browse(id_map[event.id])
|
||||||
|
event.message_unread_counter = rec.message_unread_counter
|
||||||
|
event.message_unread = rec.message_unread
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
def _get_message_needaction(self):
|
||||||
|
id_map = {x: calendar_id2real_id(x) for x in self.ids}
|
||||||
|
real = self.browse(set(id_map.values()))
|
||||||
|
super(calendar_event, real)._get_message_needaction()
|
||||||
|
for event in self:
|
||||||
|
if event.id == id_map[event.id]:
|
||||||
|
continue
|
||||||
|
rec = self.browse(id_map[event.id])
|
||||||
|
event.message_needaction_counter = rec.message_needaction_counter
|
||||||
|
event.message_needaction = rec.message_needaction
|
||||||
|
|
||||||
@api.cr_uid_ids_context
|
@api.cr_uid_ids_context
|
||||||
def message_post(self, cr, uid, thread_id, context=None, **kwargs):
|
def message_post(self, cr, uid, thread_id, context=None, **kwargs):
|
||||||
if isinstance(thread_id, basestring):
|
if isinstance(thread_id, basestring):
|
||||||
|
|||||||
@@ -348,14 +348,17 @@ class PurchaseOrder(models.Model):
|
|||||||
# this product. We limit to 10 the number of suppliers for a product to avoid the mess that
|
# this product. We limit to 10 the number of suppliers for a product to avoid the mess that
|
||||||
# could be caused for some generic products ("Miscellaneous").
|
# could be caused for some generic products ("Miscellaneous").
|
||||||
for line in self.order_line:
|
for line in self.order_line:
|
||||||
if self.partner_id not in line.product_id.seller_ids.mapped('name') and len(line.product_id.seller_ids) <= 10:
|
# Do not add a contact as a supplier
|
||||||
|
partner = self.partner_id if not self.partner_id.parent_id else self.partner_id.parent_id
|
||||||
|
if partner not in line.product_id.seller_ids.mapped('name') and len(line.product_id.seller_ids) <= 10:
|
||||||
|
currency = partner.property_purchase_currency_id or self.env.user.company_id.currency_id
|
||||||
supplierinfo = {
|
supplierinfo = {
|
||||||
'name': self.partner_id.id,
|
'name': partner.id,
|
||||||
'sequence': max(line.product_id.seller_ids.mapped('sequence')) + 1 if line.product_id.seller_ids else 1,
|
'sequence': max(line.product_id.seller_ids.mapped('sequence')) + 1 if line.product_id.seller_ids else 1,
|
||||||
'product_uom': line.product_uom.id,
|
'product_uom': line.product_uom.id,
|
||||||
'min_qty': 0.0,
|
'min_qty': 0.0,
|
||||||
'price': line.price_unit,
|
'price': self.currency_id.compute(line.price_unit, currency),
|
||||||
'currency_id': self.partner_id.currency_id.id,
|
'currency_id': currency.id,
|
||||||
'delay': 0,
|
'delay': 0,
|
||||||
}
|
}
|
||||||
vals = {
|
vals = {
|
||||||
|
|||||||
@@ -336,9 +336,8 @@ var PropertiesMixin = _.extend({}, EventDispatcherMixin, {
|
|||||||
// remove this, or move it elsewhere. Also, learn OO programming.
|
// remove this, or move it elsewhere. Also, learn OO programming.
|
||||||
if (key === 'value' && self.field && self.field.type === 'float' && tmp && val){
|
if (key === 'value' && self.field && self.field.type === 'float' && tmp && val){
|
||||||
var digits = self.field.digits;
|
var digits = self.field.digits;
|
||||||
if (digits !== 0){
|
if (_.isArray(digits)) {
|
||||||
digits = digits ? digits[1] : 2;
|
if (utils.float_is_zero(tmp - val, digits[1])) {
|
||||||
if (utils.float_is_zero(tmp - val, digits)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -366,4 +365,3 @@ return {
|
|||||||
};
|
};
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1156,7 +1156,7 @@ ListView.List = Class.extend( /** @lends instance.web.ListView.List# */{
|
|||||||
record.set(column.id, names[0]);
|
record.set(column.id, names[0]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else if (column.type === 'many2many' || column.type === 'one2many') {
|
} else if (column.type === 'many2many') {
|
||||||
value = record.get(column.id);
|
value = record.get(column.id);
|
||||||
// non-resolved (string) m2m values are arrays
|
// non-resolved (string) m2m values are arrays
|
||||||
if (value instanceof Array && !_.isEmpty(value)
|
if (value instanceof Array && !_.isEmpty(value)
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ var CalendarView = View.extend({
|
|||||||
this.title = (this.options.action)? this.options.action.name : '';
|
this.title = (this.options.action)? this.options.action.name : '';
|
||||||
|
|
||||||
this.shown = $.Deferred();
|
this.shown = $.Deferred();
|
||||||
|
self.current_start = null;
|
||||||
|
self.current_end = null;
|
||||||
|
self.previous_ids = [];
|
||||||
},
|
},
|
||||||
|
|
||||||
set_default_options: function(options) {
|
set_default_options: function(options) {
|
||||||
@@ -730,11 +733,25 @@ var CalendarView = View.extend({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// read_slice is launched uncoditionally, when quickly
|
||||||
|
// changing the range in the calender view, all of
|
||||||
|
// these RPC calls will race each other. Because of
|
||||||
|
// this we keep track of the current range of the
|
||||||
|
// calendar view.
|
||||||
|
self.current_start = start;
|
||||||
|
self.current_end = end;
|
||||||
self.dataset.read_slice(_.keys(self.fields), {
|
self.dataset.read_slice(_.keys(self.fields), {
|
||||||
offset: 0,
|
offset: 0,
|
||||||
domain: event_domain,
|
domain: event_domain,
|
||||||
context: context,
|
context: context,
|
||||||
}).done(function(events) {
|
}).done(function(events) {
|
||||||
|
// undo the read_slice if it the range has changed since it launched
|
||||||
|
if (self.current_start.getTime() != start.getTime() || self.current_end.getTime() != end.getTime()) {
|
||||||
|
self.dataset.ids = self.previous_ids;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self.previous_ids = self.dataset.ids.slice();
|
||||||
if (self.dataset.index === null) {
|
if (self.dataset.index === null) {
|
||||||
if (events.length) {
|
if (events.length) {
|
||||||
self.dataset.index = 0;
|
self.dataset.index = 0;
|
||||||
|
|||||||
@@ -416,7 +416,10 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
|
|||||||
t0 = time.time()
|
t0 = time.time()
|
||||||
t0_sql = openerp.sql_db.sql_counter
|
t0_sql = openerp.sql_db.sql_counter
|
||||||
if openerp.tools.config['test_enable']:
|
if openerp.tools.config['test_enable']:
|
||||||
cr.execute("SELECT name FROM ir_module_module WHERE state='installed'")
|
if update_module:
|
||||||
|
cr.execute("SELECT name FROM ir_module_module WHERE state='installed' and name = ANY(%s)", (processed_modules,))
|
||||||
|
else:
|
||||||
|
cr.execute("SELECT name FROM ir_module_module WHERE state='installed'")
|
||||||
for module_name in cr.fetchall():
|
for module_name in cr.fetchall():
|
||||||
report.record_result(openerp.modules.module.run_unit_tests(module_name[0], cr.dbname, position=runs_post_install))
|
report.record_result(openerp.modules.module.run_unit_tests(module_name[0], cr.dbname, position=runs_post_install))
|
||||||
_logger.log(25, "All post-tested in %.2fs, %s queries", time.time() - t0, openerp.sql_db.sql_counter - t0_sql)
|
_logger.log(25, "All post-tested in %.2fs, %s queries", time.time() - t0, openerp.sql_db.sql_counter - t0_sql)
|
||||||
|
|||||||
Reference in New Issue
Block a user