diff options
| author | Richard Mathot (OpenERP) <rim@openerp.com> | 2014-02-02 14:56:02 +0100 |
|---|---|---|
| committer | Richard Mathot (OpenERP) <rim@openerp.com> | 2014-02-02 14:56:02 +0100 |
| commit | 7f0c30580b567bb5e2e2d9d2c4e7d65112da72a5 (patch) | |
| tree | 4ac6be94f1094e629a54c2ce8ac203dfc5cdbbd8 /addons | |
| parent | 308a3def95458d5a3ff8037a01449666b1a69711 (diff) | |
| parent | c5da05715cdbe8fb5b066baa92ef0abb88d75b41 (diff) | |
[MERGE] Sync with trunk-website-al
bzr revid: rim@openerp.com-20140131154544-tfcci0uo0q6652jh
bzr revid: rim@openerp.com-20140202135602-82pcqeqqtdp6h9fr
Diffstat (limited to 'addons')
58 files changed, 321 insertions, 361 deletions
diff --git a/addons/account/report/account_analytic_entries_report.py b/addons/account/report/account_analytic_entries_report.py index f7d1177e3b0..1cd0f4c9026 100644 --- a/addons/account/report/account_analytic_entries_report.py +++ b/addons/account/report/account_analytic_entries_report.py @@ -28,11 +28,6 @@ class analytic_entries_report(osv.osv): _auto = False _columns = { 'date': fields.date('Date', readonly=True), - 'year': fields.char('Year', size=4, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), 'user_id': fields.many2one('res.users', 'User',readonly=True), 'name': fields.char('Description', size=64, readonly=True), 'partner_id': fields.many2one('res.partner', 'Partner'), @@ -56,9 +51,6 @@ class analytic_entries_report(osv.osv): min(a.id) as id, count(distinct a.id) as nbr, a.date as date, - to_char(a.date, 'YYYY') as year, - to_char(a.date, 'MM') as month, - to_char(a.date, 'YYYY-MM-DD') as day, a.user_id as user_id, a.name as name, analytic.partner_id as partner_id, diff --git a/addons/account/report/account_analytic_entries_report_view.xml b/addons/account/report/account_analytic_entries_report_view.xml index 047d563cc58..1d2e87be339 100644 --- a/addons/account/report/account_analytic_entries_report_view.xml +++ b/addons/account/report/account_analytic_entries_report_view.xml @@ -6,7 +6,6 @@ <field name="model">analytic.entries.report</field> <field name="arch" type="xml"> <search string="Analytic Entries Analysis"> - <field name="day" string="Day"/> <field name="date"/> <filter string="My Entries" icon="terp-personal" domain="[('user_id','=',uid)]" help="My Entries"/> <field name="account_id" groups="analytic.group_analytic_accounting"/> @@ -21,9 +20,9 @@ <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/> <filter string="Product Unit of Measure" icon="terp-mrp" context="{'group_by':'product_uom_id'}"/> <filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/> - <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}"/> - <filter string="Month" name="Month" icon="terp-go-month" context="{'group_by':'month'}"/> - <filter string="Year" icon="terp-go-year" context="{'group_by':'year'}"/> + <filter string="Date (day)" icon="terp-go-today" context="{'group_by':'date:day'}"/> + <filter string="Date (month)" name="Month" icon="terp-go-month" context="{'group_by':'date:month'}"/> + <filter string="Date (year)" icon="terp-go-year" context="{'group_by':'date:year'}"/> </group> </search> </field> @@ -34,8 +33,9 @@ <field name="arch" type="xml"> <graph string="Analytic Entries Analysis" type="pivot"> <field name="user_id" type="row"/> - <field name="unit_amount" operator="+"/> - <field name="amount" operator="+"/> + <field name="nbr" type="measure"/> + <field name="unit_amount" type="measure"/> + <field name="amount" type="measure"/> </graph> </field> </record> diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index d8dc45f9a3b..8fecf85ee0b 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -55,11 +55,6 @@ class account_invoice_report(osv.osv): _columns = { 'date': fields.date('Date', readonly=True), - 'year': fields.char('Year', size=4, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True), 'product_id': fields.many2one('product.product', 'Product', readonly=True), 'product_qty':fields.float('Qty', readonly=True), 'uom_name': fields.char('Reference Unit of Measure', size=128, readonly=True), @@ -105,7 +100,7 @@ class account_invoice_report(osv.osv): def _select(self): select_str = """ - SELECT sub.id, sub.date, sub.year, sub.month, sub.day, sub.product_id, sub.partner_id, sub.country_id, + SELECT sub.id, sub.date, sub.product_id, sub.partner_id, sub.country_id, sub.payment_term, sub.period_id, sub.uom_name, sub.currency_id, sub.journal_id, sub.fiscal_position, sub.user_id, sub.company_id, sub.nbr, sub.type, sub.state, sub.categ_id, sub.date_due, sub.account_id, sub.account_line_id, sub.partner_bank_id, @@ -118,9 +113,6 @@ class account_invoice_report(osv.osv): select_str = """ SELECT min(ail.id) AS id, ai.date_invoice AS date, - to_char(ai.date_invoice::timestamp with time zone, 'YYYY'::text) AS year, - to_char(ai.date_invoice::timestamp with time zone, 'MM'::text) AS month, - to_char(ai.date_invoice::timestamp with time zone, 'YYYY-MM-DD'::text) AS day, ail.product_id, ai.partner_id, ai.payment_term, ai.period_id, CASE WHEN u.uom_type::text <> 'reference'::text @@ -192,9 +184,6 @@ class account_invoice_report(osv.osv): def _group_by(self): group_by_str = """ GROUP BY ail.product_id, ai.date_invoice, ai.id, - to_char(ai.date_invoice::timestamp with time zone, 'YYYY'::text), - to_char(ai.date_invoice::timestamp with time zone, 'MM'::text), - to_char(ai.date_invoice::timestamp with time zone, 'YYYY-MM-DD'::text), ai.partner_id, ai.payment_term, ai.period_id, u.name, ai.currency_id, ai.journal_id, ai.fiscal_position, ai.user_id, ai.company_id, ai.type, ai.state, pt.categ_id, ai.date_due, ai.account_id, ail.account_id, ai.partner_bank_id, ai.residual, diff --git a/addons/account/report/account_invoice_report_view.xml b/addons/account/report/account_invoice_report_view.xml index 67d568801b7..24723d7fb12 100644 --- a/addons/account/report/account_invoice_report_view.xml +++ b/addons/account/report/account_invoice_report_view.xml @@ -6,8 +6,10 @@ <field name="model">account.invoice.report</field> <field name="arch" type="xml"> <graph string="Invoices Analysis" type="pivot"> + <field name="period_id" type="row"/> <field name="categ_id" type="row"/> - <field name="period_id" type="col"/> + <field name="nbr" type="measure"/> + <field name="product_qty" type="measure"/> <field name="price_total" type="measure"/> </graph> </field> @@ -47,9 +49,9 @@ <filter string="Journal" icon="terp-folder-orange" context="{'group_by':'journal_id'}"/> <filter string="Account" icon="terp-folder-orange" context="{'group_by':'account_line_id'}"/> <filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/> - <filter string="Day" name="day" icon="terp-go-today" context="{'group_by':'day'}" help="Group by Invoice Date"/> - <filter string="Month" name="month" icon="terp-go-month" context="{'group_by':'month'}" help="Group by month of Invoice Date"/> - <filter string="Year" name="group_year" icon="terp-go-year" context="{'group_by':'year'}" help="Group by year of Invoice Date"/> + <filter string="Invoice Date (day)" name="day" icon="terp-go-today" context="{'group_by':'date:day'}" help="Group by Invoice Date"/> + <filter string="Invoice Date (month)" name="month" icon="terp-go-month" context="{'group_by':'date:month'}" help="Group by month of Invoice Date"/> + <filter string="Invoice Date (year)" name="group_year" icon="terp-go-year" context="{'group_by':'date:year'}" help="Group by year of Invoice Date"/> </group> </search> </field> diff --git a/addons/account/report/account_treasury_report_view.xml b/addons/account/report/account_treasury_report_view.xml index fe898cd81ce..f1c84849831 100644 --- a/addons/account/report/account_treasury_report_view.xml +++ b/addons/account/report/account_treasury_report_view.xml @@ -24,6 +24,8 @@ <field name="arch" type="xml"> <graph string="Treasury Analysis" type="pivot"> <field name="period_id" type="row"/> + <field name="debit" type="measure"/> + <field name="credit" type="measure"/> <field name="balance" type="measure"/> </graph> </field> diff --git a/addons/account_asset/report/account_asset_report_view.xml b/addons/account_asset/report/account_asset_report_view.xml index 4655172572c..19299eee501 100644 --- a/addons/account_asset/report/account_asset_report_view.xml +++ b/addons/account_asset/report/account_asset_report_view.xml @@ -7,8 +7,11 @@ <field name="model">asset.asset.report</field> <field name="arch" type="xml"> <graph string="Assets Analysis" type="pivot"> - <field name="asset_id"/> - <field name="depreciation_value"/> + <field name="asset_id" type="row"/> + <field name="nbr" type="measure"/> + <field name="gross_value" type="measure"/> + <field name="depreciation_value" type="measure"/> + <field name="posted_value" type="measure"/> </graph> </field> </record> diff --git a/addons/crm/report/crm_phonecall_report.py b/addons/crm/report/crm_phonecall_report.py index fba095f1174..6a3e3bf208b 100644 --- a/addons/crm/report/crm_phonecall_report.py +++ b/addons/crm/report/crm_phonecall_report.py @@ -40,20 +40,12 @@ class crm_phonecall_report(osv.osv): _auto = False _columns = { - 'name': fields.char('Year', size=64, required=False, readonly=True), 'user_id':fields.many2one('res.users', 'User', readonly=True), 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), 'nbr': fields.integer('# of Cases', readonly=True), 'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True), - 'month':fields.selection([('01', 'January'), ('02', 'February'), \ - ('03', 'March'), ('04', 'April'),\ - ('05', 'May'), ('06', 'June'), \ - ('07', 'July'), ('08', 'August'),\ - ('09', 'September'), ('10', 'October'),\ - ('11', 'November'), ('12', 'December')], 'Month', readonly=True), 'create_date': fields.datetime('Create Date', readonly=True, select=True), - 'day': fields.char('Day', size=128, readonly=True), 'delay_close': fields.float('Delay to close', digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"), 'duration': fields.float('Duration', digits=(16,2),readonly=True, group_operator="avg"), 'delay_open': fields.float('Delay to open',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"), @@ -77,9 +69,6 @@ class crm_phonecall_report(osv.osv): create or replace view crm_phonecall_report as ( select id, - to_char(c.date, 'YYYY') as name, - to_char(c.date, 'MM') as month, - to_char(c.date, 'YYYY-MM-DD') as day, to_char(c.create_date, 'YYYY-MM-DD') as creation_date, to_char(c.date_open, 'YYYY-MM-DD') as opening_date, to_char(c.date_closed, 'YYYY-mm-dd') as date_closed, diff --git a/addons/crm/report/crm_phonecall_report_view.xml b/addons/crm/report/crm_phonecall_report_view.xml index 9de9adeade3..32ae9704064 100644 --- a/addons/crm/report/crm_phonecall_report_view.xml +++ b/addons/crm/report/crm_phonecall_report_view.xml @@ -12,6 +12,7 @@ <field name="user_id" type="row"/> <!-- <field name="state" type="col"/> --> <field name="nbr" type="measure"/> + <field name="duration" type="measure"/> </graph> </field> </record> @@ -52,9 +53,9 @@ <filter string="Category" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}" /> <filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}" /> <filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/> - <filter string="Day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}" help="Date of call"/> - <filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'month'}" help="Month of call"/> - <filter string="Year" icon="terp-go-year" domain="[]" context="{'group_by':'name'}" help="Year of call"/> + <filter string="Creation Date (day)" icon="terp-go-today" domain="[]" context="{'group_by':'create_date:day'}" help="Date of call"/> + <filter string="Creation Date (month)" icon="terp-go-month" domain="[]" context="{'group_by':'create_date:month'}" help="Month of call"/> + <filter string="Creation Date (year)" icon="terp-go-year" domain="[]" context="{'group_by':'create_date:name'}" help="Year of call"/> </group> </search> </field> diff --git a/addons/crm_partner_assign/report/crm_lead_report.py b/addons/crm_partner_assign/report/crm_lead_report.py index c7a6b76ee44..572e1796b00 100644 --- a/addons/crm_partner_assign/report/crm_lead_report.py +++ b/addons/crm_partner_assign/report/crm_lead_report.py @@ -30,22 +30,14 @@ class crm_lead_report_assign(osv.osv): _auto = False _description = "CRM Lead Report" _columns = { - 'year': fields.char('Year', size=64, required=False, readonly=True), 'partner_assigned_id':fields.many2one('res.partner', 'Partner', readonly=True), 'grade_id':fields.many2one('res.partner.grade', 'Grade', readonly=True), 'user_id':fields.many2one('res.users', 'User', readonly=True), 'country_id':fields.many2one('res.country', 'Country', readonly=True), 'section_id':fields.many2one('crm.case.section', 'Sales Team', readonly=True), - 'month':fields.selection([('01', 'January'), ('02', 'February'), \ - ('03', 'March'), ('04', 'April'),\ - ('05', 'May'), ('06', 'June'), \ - ('07', 'July'), ('08', 'August'),\ - ('09', 'September'), ('10', 'October'),\ - ('11', 'November'), ('12', 'December')], 'Month', readonly=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True), - 'date_assign': fields.date('Partner Date', readonly=True), + 'date_assign': fields.date('Assign Date', readonly=True), 'create_date': fields.datetime('Create Date', readonly=True), - 'day': fields.char('Day', size=128, readonly=True), 'delay_open': fields.float('Delay to Assign',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"), 'delay_close': fields.float('Delay to Close',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"), 'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"), @@ -77,9 +69,6 @@ class crm_lead_report_assign(osv.osv): CREATE OR REPLACE VIEW crm_lead_report_assign AS ( SELECT c.id, - to_char(c.date_assign, 'YYYY') as year, - to_char(c.date_assign, 'MM') as month, - to_char(c.date_assign, 'YYYY-MM-DD') as day, to_char(c.create_date, 'YYYY-MM-DD') as creation_date, to_char(c.date_open, 'YYYY-MM-DD') as opening_date, to_char(c.date_closed, 'YYYY-mm-dd') as date_closed, diff --git a/addons/crm_partner_assign/report/crm_lead_report_view.xml b/addons/crm_partner_assign/report/crm_lead_report_view.xml index a7ff8d80f0f..271c9b2016f 100644 --- a/addons/crm_partner_assign/report/crm_lead_report_view.xml +++ b/addons/crm_partner_assign/report/crm_lead_report_view.xml @@ -35,10 +35,9 @@ <filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/> <filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" /> <filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" /> - <filter string="Assign Month" icon="terp-go-today" domain="[]" name="group_partner_date" context="{'group_by':'date_assign'}"/> - <filter string="Day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}"/> - <filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'month'}" /> - <filter string="Year" icon="terp-go-year" domain="[]" context="{'group_by':'year'}" /> + <filter string="Assign Date (day)" icon="terp-go-today" domain="[]" context="{'group_by':'date_assign:day'}"/> + <filter string="Assign Date (month)" icon="terp-go-month" domain="[]" context="{'group_by':'date_assign:month'}"/> + <filter string="Assign Date (year)" icon="terp-go-year" domain="[]" context="{'group_by':'date_assign:year'}"/> </group> </search> </field> @@ -50,9 +49,11 @@ <field name="name">crm.lead.assign.graph</field> <field name="model">crm.lead.report.assign</field> <field name="arch" type="xml"> - <graph orientation="horizontal" string="Lead Assign" type="pivot" stacked="True"> - <field name="user_id" type="row"/> + <graph string="Lead Assign" type="pivot" stacked="True"> + <field name="grade_id" type="row"/> + <field name="date_assign" interval="month" type="row"/> <field name="nbr" type="measure"/> + <field name="probable_revenue" type="measure"/> </graph> </field> </record> @@ -63,7 +64,7 @@ <field name="name">Opp. Assignment Analysis</field> <field name="res_model">crm.lead.report.assign</field> <field name="view_type">form</field> - <field name="context">{'default_type': 'opportunity', "search_default_group_partner_date": 1, "search_default_group_grade":1,'group_by_no_leaf':1,'group_by':[]}</field> + <field name="context">{'default_type': 'opportunity', 'group_by_no_leaf':1,'group_by':[]}</field> <field name="view_mode">graph</field> <field name="domain">[('type', '=', 'opportunity')]</field> </record> diff --git a/addons/crm_partner_assign/report/crm_partner_report_view.xml b/addons/crm_partner_assign/report/crm_partner_report_view.xml index 4e7e13afb15..02320219218 100644 --- a/addons/crm_partner_assign/report/crm_partner_report_view.xml +++ b/addons/crm_partner_assign/report/crm_partner_report_view.xml @@ -24,7 +24,7 @@ domain="[]" context="{'group_by':'grade_id'}" /> <filter string="Partner" name="" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'partner_id'}" /> - <filter string="Date Invoice" name="group_period_id" icon="terp-stock_symbol-selection" + <filter string="Invoice Period" name="group_period_id" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'period_id'}" /> <filter string="Date Partnership" name="group_date_partnership" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'date_partnership'}" /> @@ -35,25 +35,15 @@ </field> </record> -<!-- Crm Lead Assign report Graph View --> - - <record id="view_report_crm_partner_assign_tree" model="ir.ui.view"> - <field name="name">crm.partner.assign.report.tree</field> + <record id="view_report_crm_partner_assign_graph" model="ir.ui.view"> + <field name="name">crm.partner.assign.report.graph</field> <field name="model">crm.partner.report.assign</field> <field name="arch" type="xml"> - <tree string="Opportunities Assignment Analysis" create="false"> - <field name="partner_id" invisible="1"/> - <field name="country_id" invisible="1"/> - <field name="grade_id" invisible="1"/> - <field name="activation" invisible="1"/> - <field name="date_review" invisible="1"/> - <field name="date_partnership" invisible="1"/> - <field name="period_id" invisible="1"/> - <field name="section_id" invisible="1" groups="base.group_multi_salesteams"/> - <field name="user_id" invisible="1"/> - <field name="opp"/> - <field name="turnover"/> - </tree> + <graph string="Opportunities Assignment Analysis" type="pivot" stacked="True"> + <field name="grade_id" type="row"/> + <field name="opp" type="measure"/> + <field name="turnover" type="measure"/> + </graph> </field> </record> @@ -62,8 +52,8 @@ <record id="action_report_crm_partner_assign" model="ir.actions.act_window"> <field name="name">Partnership Analysis</field> <field name="res_model">crm.partner.report.assign</field> - <field name="context">{'search_default_group_grade': 1, 'group_by_no_leaf':1,'group_by':[]}</field> - <field name="view_mode">tree</field> + <field name="context">{'group_by_no_leaf':1,'group_by':[]}</field> + <field name="view_mode">graph</field> <field name="domain">[('grade_id', '!=', False)]</field> </record> diff --git a/addons/event/__openerp__.py b/addons/event/__openerp__.py index ad01e28f199..e7cf8c4c749 100644 --- a/addons/event/__openerp__.py +++ b/addons/event/__openerp__.py @@ -60,7 +60,6 @@ Key Features ], 'css': ['static/src/css/event.css'], 'installable': True, - 'application': True, 'auto_install': False, 'images': ['images/1_event_type_list.jpeg','images/2_events.jpeg','images/3_registrations.jpeg','images/events_kanban.jpeg'], } diff --git a/addons/fleet/fleet_board_view.xml b/addons/fleet/fleet_board_view.xml index 41093d2c283..c4732d9a0f4 100644 --- a/addons/fleet/fleet_board_view.xml +++ b/addons/fleet/fleet_board_view.xml @@ -54,10 +54,10 @@ <record model="ir.actions.act_window" id="action_fleet_reporting_costs"> <field name="name">Costs Analysis</field> <field name="res_model">fleet.vehicle.cost</field> - <field name="view_id" ref="fleet_vehicle_costs_tree"></field> + <field name="view_id" ref="fleet_vehicle_costs_report"></field> <field name="view_type">form</field> - <field name="view_mode">tree</field> - <field name="context">{"search_default_parent_false" : True,"search_default_groupby_year" : True,"search_default_groupby_cost_type" : True,"search_default_groupby_cost_subtype" : True, "search_default_groupby_vehicle_id" : True,}</field> + <field name="view_mode">graph</field> + <field name="context">{"search_default_parent_false" : True,"search_default_groupby_year" : True, "search_default_groupby_cost_subtype" : True,"search_default_groupby_vehicle_id" : True}</field> <field name="help" type="html"> <p> OpenERP helps you managing the costs for your different vehicles @@ -73,10 +73,10 @@ <record model="ir.actions.act_window" id="action_fleet_reporting_costs_non_effective"> <field name="name">Indicative Costs Analysis</field> <field name="res_model">fleet.vehicle.cost</field> - <field name="view_id" ref="fleet_vehicle_costs_tree"></field> + <field name="view_id" ref="fleet_vehicle_costs_report"></field> <field name="view_type">form</field> - <field name="view_mode">tree</field> - <field name="context">{"search_default_parent_true" : True,"search_default_groupby_cost_subtype" : True,"search_default_groupby_cost_type" : True,"search_default_groupby_parent_id" : True,}</field> + <field name="view_mode">graph</field> + <field name="context">{"search_default_parent_true" : True,"search_default_groupby_cost_subtype" : True,"search_default_groupby_parent_id" : True,}</field> <field name="help" type="html"> <p> OpenERP helps you managing the costs for your different vehicles diff --git a/addons/fleet/fleet_view.xml b/addons/fleet/fleet_view.xml index db38821b56e..c8929d2b492 100644 --- a/addons/fleet/fleet_view.xml +++ b/addons/fleet/fleet_view.xml @@ -849,19 +849,17 @@ <menuitem action="fleet_vehicle_service_types_act" parent="fleet_configuration" id="fleet_vehicle_service_types_menu" groups="base.group_no_one"/> - <record model='ir.ui.view' id='fleet_vehicle_costs_tree'> - <field name="name">fleet.vehicle.cost.tree</field> + <record model='ir.ui.view' id='fleet_vehicle_costs_report'> + <field name="name">fleet.vehicle.cost.graph</field> <field name="model">fleet.vehicle.cost</field> <field name="arch" type="xml"> - <tree string="Vehicles costs" > - <field name="date"/> - <field name="vehicle_id" /> - <field name="cost_type"/> - <field name="cost_subtype_id"/> - <field name="amount" sum="Total Cost"/> - <field name="parent_id" invisible="1" /> - <field name="year" invisible="1"/> - </tree> + <graph string="Vehicles costs" type="pivot"> + <field name="date" interval="year" type="row"/> + <field name="vehicle_id" type="row"/> + <field name="cost_type" type="col"/> + <!-- <field name="cost_subtype_id"/> --> + <field name="amount" type="measure"/> + </graph> </field> </record> diff --git a/addons/gamification_sale_crm/sale_crm_goals.xml b/addons/gamification_sale_crm/sale_crm_goals.xml index b48cc8a3117..4c1f8e46149 100644 --- a/addons/gamification_sale_crm/sale_crm_goals.xml +++ b/addons/gamification_sale_crm/sale_crm_goals.xml @@ -10,7 +10,7 @@ <field name="monetary">True</field> <field name="model_id" eval="ref('account.model_account_invoice_report')" /> <field name="field_id" eval="ref('account.field_account_invoice_report_price_total')" /> - <field name="field_date_id" eval="ref('account.field_account_invoice_report_day')" /> + <field name="field_date_id" eval="ref('account.field_account_invoice_report_date')" /> <field name="domain">[('state','!=','cancel'),('user_id','=',user.id),('type','=','out_invoice')]</field> </record> @@ -86,7 +86,7 @@ <field name="computation_mode">count</field> <field name="suffix">orders</field> <field name="model_id" eval="ref('account.model_account_invoice_report')" /> - <field name="field_date_id" eval="ref('account.field_account_invoice_report_day')" /> + <field name="field_date_id" eval="ref('account.field_account_invoice_report_date')" /> <field name="domain">[('state','=','paid'),('user_id','=',user.id),('type','=','out_invoice')]</field> </record> <record model="gamification.goal.definition" id="definition_crm_tot_paid_sale_order"> @@ -96,7 +96,7 @@ <field name="monetary">True</field> <field name="model_id" eval="ref('account.model_account_invoice_report')" /> <field name="field_id" eval="ref('account.field_account_invoice_report_price_total')" /> - <field name="field_date_id" eval="ref('account.field_account_invoice_report_day')" /> + <field name="field_date_id" eval="ref('account.field_account_invoice_report_date')" /> <field name="domain">[('state','=','paid'),('user_id','=',user.id),('type','=','out_invoice')]</field> </record> @@ -108,7 +108,7 @@ <field name="condition">lower</field> <field name="suffix">invoices</field> <field name="model_id" eval="ref('account.model_account_invoice_report')" /> - <field name="field_date_id" eval="ref('account.field_account_invoice_report_day')" /> + <field name="field_date_id" eval="ref('account.field_account_invoice_report_date')" /> <field name="domain">[('state','!=','cancel'),('user_id','=',user.id),('type','=','out_refund')]</field> </record> <record model="gamification.goal.definition" id="definition_crm_tot_customer_refunds"> @@ -119,7 +119,7 @@ <field name="monetary">True</field> <field name="model_id" eval="ref('account.model_account_invoice_report')" /> <field name="field_id" eval="ref('account.field_account_invoice_report_price_total')" /> - <field name="field_date_id" eval="ref('account.field_account_invoice_report_day')" /> + <field name="field_date_id" eval="ref('account.field_account_invoice_report_date')" /> <field name="domain">[('state','!=','cancel'),('user_id','=',user.id),('type','=','out_refund')]</field> </record> diff --git a/addons/hr_expense/report/hr_expense_report_view.xml b/addons/hr_expense/report/hr_expense_report_view.xml index 45a72fa0630..f2ba5290c96 100644 --- a/addons/hr_expense/report/hr_expense_report_view.xml +++ b/addons/hr_expense/report/hr_expense_report_view.xml @@ -10,6 +10,9 @@ <field name="employee_id" type="row"/> <field name="state" type="row"/> <field name="nbr" type="measure"/> + <field name="no_of_products" type="measure"/> + <field name="price_average" type="measure"/> + <field name="price_total" type="measure"/> </graph> </field> </record> diff --git a/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml b/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml index 5e2ca249d7d..8e06530ee9b 100644 --- a/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml +++ b/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml @@ -9,6 +9,7 @@ <field name="user_id" type="row"/> <field name="date" interval="day" type="col"/> <field name="quantity" type="measure"/> + <field name="cost" type="measure"/> </graph> </field> </record> diff --git a/addons/hr_timesheet_sheet/report/timesheet_report_view.xml b/addons/hr_timesheet_sheet/report/timesheet_report_view.xml index 47854b1f2fd..a85b17b88af 100644 --- a/addons/hr_timesheet_sheet/report/timesheet_report_view.xml +++ b/addons/hr_timesheet_sheet/report/timesheet_report_view.xml @@ -9,6 +9,10 @@ <field name="user_id" type="row"/> <field name="state" type="row"/> <field name="quantity" type="measure"/> + <field name="cost" type="measure"/> + <field name="total_diff" type="measure"/> + <field name="total_timesheet" type="measure"/> + <field name="total_attendance" type="measure"/> </graph> </field> </record> diff --git a/addons/hw_escpos/controllers/main.py b/addons/hw_escpos/controllers/main.py index b1ba85b2dba..c668a1ffdd7 100644 --- a/addons/hw_escpos/controllers/main.py +++ b/addons/hw_escpos/controllers/main.py @@ -8,6 +8,7 @@ import openerp import time import random import math +import md5 import openerp.addons.hw_proxy.controllers.main as hw_proxy import subprocess from threading import Thread @@ -154,25 +155,9 @@ class EscposDriver(Thread): for tax in taxes: eprint.text(printline(tax['tax']['name'],price(tax['amount']), width=40,ratio=0.6)) - logo = None - - if receipt['company']['logo']: - img = receipt['company']['logo'] - img = img[img.find(',')+1:] - f = io.BytesIO('img') - f.write(base64.decodestring(img)) - f.seek(0) - logo_rgba = Image.open(f) - logo = Image.new('RGB', logo_rgba.size, (255,255,255)) - logo.paste(logo_rgba, mask=logo_rgba.split()[3]) - width = 300 - wfac = width/float(logo_rgba.size[0]) - height = int(logo_rgba.size[1]*wfac) - logo = logo.resize((width,height), Image.ANTIALIAS) - # Receipt Header - if logo: - eprint._convert_image(logo) + if receipt['company']['logo']: + eprint.print_base64_image(receipt['company']['logo']) eprint.text('\n') else: eprint.set(align='center',type='b',height=2,width=2) diff --git a/addons/hw_escpos/escpos/escpos.py b/addons/hw_escpos/escpos/escpos.py index df96646c9d7..a4942019f8c 100644 --- a/addons/hw_escpos/escpos/escpos.py +++ b/addons/hw_escpos/escpos/escpos.py @@ -13,6 +13,10 @@ except ImportError: import time import copy +import io +import base64 +import math +import md5 from PIL import Image @@ -30,6 +34,7 @@ class Escpos: """ ESC/POS Printer object """ device = None encoding = None + img_cache = {} def _check_image_size(self, size): @@ -49,6 +54,7 @@ class Escpos: i = 0 cont = 0 buffer = "" + self._raw(S_RASTER_N) buffer = "%02X%02X%02X%02X" % (((size[0]/size[1])/8), 0, size[1], 0) @@ -65,6 +71,36 @@ class Escpos: buffer = "" cont = 0 + def _raw_print_image(self, line, size, output=None ): + """ Print formatted image """ + i = 0 + cont = 0 + buffer = "" + raw = "" + + def __raw(string): + if output: + output(string) + else: + self._raw(string) + + raw += S_RASTER_N + buffer = "%02X%02X%02X%02X" % (((size[0]/size[1])/8), 0, size[1], 0) + raw += buffer.decode('hex') + buffer = "" + + while i < len(line): + hex_string = int(line[i:i+8],2) + buffer += "%02X" % hex_string + i += 8 + cont += 1 + if cont % 4 == 0: + raw += buffer.decode("hex") + buffer = "" + cont = 0 + + return raw + def _convert_image(self, im): """ Parse image and prepare it to a printable format """ @@ -111,16 +147,45 @@ class Escpos: pix_line += im_right img_size[0] += im_border[1] - self._print_image(pix_line, img_size) - + return (pix_line, img_size) def image(self,path_img): """ Open image file """ im_open = Image.open(path_img) im = im_open.convert("RGB") # Convert the RGB image in printable image - self._convert_image(im) + pix_line, img_size = self._convert_image(im) + self._print_image(pix_line, img_size) + + def print_base64_image(self,img): + + print 'print_b64_img' + + id = md5.new(img).digest() + + if id not in self.img_cache: + print 'not in cache' + + img = img[img.find(',')+1:] + f = io.BytesIO('img') + f.write(base64.decodestring(img)) + f.seek(0) + img_rgba = Image.open(f) + img = Image.new('RGB', img_rgba.size, (255,255,255)) + img.paste(img_rgba, mask=img_rgba.split()[3]) + + print 'convert image' + + pix_line, img_size = self._convert_image(img) + + print 'print image' + + buffer = self._raw_print_image(pix_line, img_size) + self.img_cache[id] = buffer + + print 'raw image' + self._raw(self.img_cache[id]) def qr(self,text): """ Print QR Code for the provided string """ diff --git a/addons/membership/report/report_membership_view.xml b/addons/membership/report/report_membership_view.xml index bfbdcefca5d..50b579d9ec2 100644 --- a/addons/membership/report/report_membership_view.xml +++ b/addons/membership/report/report_membership_view.xml @@ -40,6 +40,7 @@ <graph string="Membership" type="pivot"> <field name="year" type="row" /> <field name="num_paid" type="measure"/> + <field name="tot_earned" type="measure"/> </graph> </field> </record> diff --git a/addons/mrp_operations/report/mrp_workorder_analysis.py b/addons/mrp_operations/report/mrp_workorder_analysis.py index f91961ad74c..d9d3947bae6 100644 --- a/addons/mrp_operations/report/mrp_workorder_analysis.py +++ b/addons/mrp_operations/report/mrp_workorder_analysis.py @@ -28,10 +28,6 @@ class mrp_workorder(osv.osv): _description = "Work Order Report" _auto = False _columns = { - 'year': fields.char('Year', size=64, readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), - ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), - 'day': fields.char('Day', size=64, readonly=True), 'nbr': fields.integer('# of Lines', readonly=True), 'date': fields.date('Date', readonly=True), 'product_id': fields.many2one('product.product', 'Product', readonly=True), @@ -50,9 +46,6 @@ class mrp_workorder(osv.osv): create or replace view mrp_workorder as ( select to_date(to_char(wl.date_planned, 'MM-dd-YYYY'),'MM-dd-YYYY') as date, - to_char(wl.date_planned, 'YYYY') as year, - to_char(wl.date_planned, 'MM') as month, - to_char(wl.date_planned, 'YYYY-MM-DD') as day, min(wl.id) as id, mp.product_id as product_id, sum(wl.hour) as total_hours, diff --git a/addons/mrp_operations/report/mrp_workorder_analysis_view.xml b/addons/mrp_operations/report/mrp_workorder_analysis_view.xml index 144bfb95c63..92c6ef9adb2 100644 --- a/addons/mrp_operations/report/mrp_workorder_analysis_view.xml +++ b/addons/mrp_operations/report/mrp_workorder_analysis_view.xml @@ -10,7 +10,10 @@ <field name="arch" type="xml"> <graph string="Work Orders" type="pivot"> <field name="state" type="row"/> + <field name="product_qty" type="measure"/> <field name="nbr" type="measure"/> + <field name="total_hours" type="measure"/> + <field name="total_cycles" type="measure"/> </graph> </field> </record> @@ -31,9 +34,9 @@ <filter string="Work Center" name="Workcenter" icon="terp-go-home" context="{'group_by':'workcenter_id'}" /> <filter string="Production" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'production_id'}"/> <filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/> - <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Planned Day"/> - <filter string="Month" name="terp-go-month" icon="terp-go-month" context="{'group_by':'month'}" help="Planned Month"/> - <filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Planned Year"/> + <filter string="Date Planned (day)" icon="terp-go-today" context="{'group_by':'date:day'}" help="Planned Day"/> + <filter string="Date Planned (month)" name="terp-go-month" icon="terp-go-month" context="{'group_by':'date:month'}" help="Planned Month"/> + <filter string="Date Planned (year)" icon="terp-go-year" context="{'group_by':'date:year'}" help="Planned Year"/> </group> </search> </field> @@ -45,7 +48,7 @@ <field name="view_mode">graph</field> <field name="view_id" ref="view_report_mrp_workorder_graph"/> <field name="search_view_id" ref="view_report_mrp_workorder_filter"/> - <field name="context">{'search_default_Workcenter': 1,'search_default_year':1,'search_default_month':1,'group_by_no_leaf':1,'group_by':[]}</field> + <field name="context">{'search_default_Workcenter': 1,'group_by_no_leaf':1,'group_by':[]}</field> </record> <record model="ir.actions.act_window.view" id="action_report_mrp_workorder_graph"> diff --git a/addons/point_of_sale/controllers/main.py b/addons/point_of_sale/controllers/main.py index a340b5f6262..b6848c8421f 100644 --- a/addons/point_of_sale/controllers/main.py +++ b/addons/point_of_sale/controllers/main.py @@ -58,13 +58,12 @@ class PosController(http.Controller): @http.route('/pos/web', type='http', auth='none') def a(self, debug=False, **k): + if not request.session.uid: + return http.local_redirect('/web/login?redirect=/pos/web') js_list = manifest_list('js',db=request.db, debug=debug) css_list = manifest_list('css',db=request.db, debug=debug) - print css_list - print js_list - js = "\n".join('<script type="text/javascript" src="%s"></script>' % i for i in js_list) #css = "\n".join('<link rel="stylesheet" href="%s">' % i for i in css_list) r = html_template % { @@ -76,9 +75,6 @@ class PosController(http.Controller): wc.show_application = function(){ wc.action_manager.do_action("pos.ui"); }; - wc.show_login = function(){ - window.location.href = '/'; - } wc.appendTo($(document.body)); """ } diff --git a/addons/point_of_sale/report/pos_order_report.py b/addons/point_of_sale/report/pos_order_report.py index f3ee5e317c8..5489ccf7099 100644 --- a/addons/point_of_sale/report/pos_order_report.py +++ b/addons/point_of_sale/report/pos_order_report.py @@ -28,11 +28,6 @@ class pos_order_report(osv.osv): _auto = False _columns = { 'date': fields.date('Date Order', readonly=True), - 'year': fields.char('Year', size=4, readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), - 'day': fields.char('Day', size=128, readonly=True), 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True), 'product_id':fields.many2one('product.product', 'Product', readonly=True), 'state': fields.selection([('draft', 'New'), ('paid', 'Closed'), ('done', 'Synchronized'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')], @@ -57,15 +52,12 @@ class pos_order_report(osv.osv): select min(l.id) as id, count(*) as nbr, - to_date(to_char(s.date_order, 'dd-MM-YYYY'),'dd-MM-YYYY') as date, + s.date_order as date, sum(l.qty * u.factor) as product_qty, sum(l.qty * l.price_unit) as price_total, sum((l.qty * l.price_unit) * (l.discount / 100)) as total_discount, (sum(l.qty*l.price_unit)/sum(l.qty * u.factor))::decimal(16,2) as average_price, sum(cast(to_char(date_trunc('day',s.date_order) - date_trunc('day',s.create_date),'DD') as int)) as delay_validation, - to_char(s.date_order, 'YYYY') as year, - to_char(s.date_order, 'MM') as month, - to_char(s.date_order, 'YYYY-MM-DD') as day, s.partner_id as partner_id, s.state as state, s.user_id as user_id, @@ -78,8 +70,7 @@ class pos_order_report(osv.osv): left join product_template pt on (pt.id=l.product_id) left join product_uom u on (u.id=pt.uom_id) group by - to_char(s.date_order, 'dd-MM-YYYY'),to_char(s.date_order, 'YYYY'),to_char(s.date_order, 'MM'), - to_char(s.date_order, 'YYYY-MM-DD'), s.partner_id,s.state, + s.date_order, s.partner_id,s.state, s.user_id,s.warehouse_id,s.company_id,s.sale_journal,l.product_id,s.create_date having sum(l.qty * u.factor) != 0)""") diff --git a/addons/point_of_sale/report/pos_order_report_view.xml b/addons/point_of_sale/report/pos_order_report_view.xml index 135b6dcadaa..a34bab9c559 100644 --- a/addons/point_of_sale/report/pos_order_report_view.xml +++ b/addons/point_of_sale/report/pos_order_report_view.xml @@ -1,29 +1,18 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> <data> - <record id="view_report_pos_order_tree" model="ir.ui.view"> - <field name="name">report.pos.order.tree</field> + <record id="view_report_pos_order_graph" model="ir.ui.view"> + <field name="name">report.pos.order.graph</field> <field name="model">report.pos.order</field> <field name="arch" type="xml"> - <tree string="Point of Sale Analysis" create="false"> - <field name="date" invisible="1"/> - <field name="user_id" invisible="1"/> - <field name="year" invisible="1"/> - <field name="day" invisible="1"/> - <field name="month" invisible="1"/> - <field name="partner_id" invisible="1"/> - <field name="product_id" invisible="1"/> - <field name="warehouse_id" invisible="1"/> - <!--<field name="journal_id" invisible="1"/>--> - <field name="company_id" invisible="1" groups="base.group_multi_company"/> - <field name="nbr" sum="# of Lines"/> - <field name="product_qty" sum="# of Qty"/> - <field name="average_price" sum="Average Price"/> - <field name="total_discount" sum="Total Discount"/> - <field name="price_total" sum="Total Price"/> - <field name="delay_validation"/> - <!--<field name="state" invisible="1"/>--> - </tree> + <graph string="Point of Sale Analysis" type="pivot"> + <field name="date" interval="day" type="row"/> + <field name="nbr" type="measure"/> + <field name="product_qty" type="measure"/> + <field name="average_price" type="measure"/> + <field name="total_discount" type="measure"/> + <field name="price_total" type="measure"/> + </graph> </field> </record> @@ -36,10 +25,7 @@ <filter icon="terp-dolar" string="Invoiced" domain="[('state','=',('invoiced'))]"/> <filter icon="terp-dolar" string="Not Invoiced" domain="[('state','=',('paid'))]"/> <separator/> - <filter icon="terp-go-year" string="Year" name="year" domain="[('year','=',time.strftime('%%Y'))]" help="POS ordered created during current year"/> - <separator/> - <filter icon="terp-go-today" string="Today" name="today" domain="[('date','=', time.strftime('%%Y-%%m-%%d'))]" - help="POS ordered created by today"/> + <filter icon="terp-go-year" string="Year" name="year" domain="[('date','<=', time.strftime('%%Y-%%m-%%d')),('date','>=',time.strftime('%%Y-01-01'))]" help="POS ordered created during current year"/> <separator/> <filter icon="terp-personal" string="My Sales" help="My Sales" domain="[('user_id','=',uid)]"/> <field name="partner_id"/> @@ -50,9 +36,9 @@ <filter string="Salesperson" icon="terp-personal" name="User" context="{'group_by':'user_id'}"/> <filter string="Customer" icon="terp-personal" context="{'group_by':'partner_id'}"/> <filter string="Product" icon="terp-accessories-archiver" context="{'group_by':'product_id'}"/> - <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Day of order date"/> - <filter string="Month" icon="terp-go-month" context="{'group_by':'month'}" help="Month of order date"/> - <filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Year of order date"/> + <filter string="Order Date (day)" icon="terp-go-today" context="{'group_by':'date:day'}" help="Day of order date"/> + <filter string="Order Date (month)" icon="terp-go-month" context="{'group_by':'date:month'}" help="Month of order date"/> + <filter string="Order Date (year)" icon="terp-go-year" context="{'group_by':'date:year'}" help="Year of order date"/> </group> </search> </field> @@ -62,9 +48,9 @@ <field name="name">Orders Analysis</field> <field name="res_model">report.pos.order</field> <field name="view_type">form</field> - <field name="view_mode">tree</field> + <field name="view_mode">graph</field> <field name="search_view_id" ref="view_report_pos_order_search"/> - <field name="context">{'search_default_year':1,'search_default_today':1,'group_by_no_leaf':1,'group_by':['product_id']}</field> + <field name="context">{'search_default_year':1, 'group_by_no_leaf':1,'group_by':['product_id']}</field> </record> <menuitem action="action_report_pos_order_all" id="menu_report_pos_order_all" parent="menu_point_rep" sequence="3"/> diff --git a/addons/point_of_sale/static/src/js/devices.js b/addons/point_of_sale/static/src/js/devices.js index bb13503d903..8eb32d63873 100644 --- a/addons/point_of_sale/static/src/js/devices.js +++ b/addons/point_of_sale/static/src/js/devices.js @@ -142,7 +142,7 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal // connects to the specified url connect: function(url){ var self = this; - this.connection = new instance.web.Session(undefined,url); + this.connection = new instance.web.Session(undefined,url, { use_cors: true}); this.host = url; this.set_connection_status('connecting',{}); @@ -190,7 +190,7 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal if(!this.keptalive){ this.keptalive = true; function status(){ - self.connection.rpc('/hw_proxy/status_json',{},{timeout:500}) + self.connection.rpc('/hw_proxy/status_json',{},{timeout:2500}) .then(function(driver_status){ self.set_connection_status('connected',driver_status); },function(){ @@ -237,7 +237,14 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal this.set_connection_status('connecting'); if(options.force_ip){ - urls.push(options.force_ip); + var url = options.force_ip; + if(url.indexOf('//') < 0){ + url = 'http://'+url; + } + if(url.indexOf(':',5) < 0){ + url = url+port; + } + urls.push(url); }else{ if(localStorage['hw_proxy_url']){ urls.push(localStorage['hw_proxy_url']); diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index f65cf3b64f3..6b54c14113d 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -260,12 +260,26 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal self.company_logo.crossOrigin = 'anonymous'; var logo_loaded = new $.Deferred(); self.company_logo.onload = function(){ + var img = self.company_logo; + var ratio = 1; + var targetwidth = 300; + var maxheight = 150; + if( img.width !== targetwidth ){ + ratio = targetwidth / img.width; + } + if( img.height * ratio > maxheight ){ + ratio = maxheight / img.height; + } + var width = Math.floor(img.width * ratio); + var height = Math.floor(img.height * ratio); var c = document.createElement('canvas'); - c.width = self.company_logo.width; - c.height = self.company_logo.height; + c.width = width; + c.height = height var ctx = c.getContext('2d'); - ctx.drawImage(self.company_logo,0,0); + ctx.drawImage(self.company_logo,0,0, width, height); + self.company_logo_base64 = c.toDataURL(); + window.logo64 = self.company_logo_base64; logo_loaded.resolve(); }; self.company_logo.onerror = function(){ diff --git a/addons/project/report/project_cumulative.xml b/addons/project/report/project_cumulative.xml index 8886ae17505..e85d9d80138 100644 --- a/addons/project/report/project_cumulative.xml +++ b/addons/project/report/project_cumulative.xml @@ -6,10 +6,11 @@ <field name="name">project.task.history.cumulative.graph</field> <field name="model">project.task.history.cumulative</field> <field name="arch" type="xml"> - <graph string="Project Tasks" type="pivot" stacked="True"> + <graph string="Project Tasks" type="bar" stacked="True"> <field name="date" type="row"/> <field name="type_id" type="row"/> <field name="planned_hours" type="measure"/> + <field name="remaining_hours" type="measure"/> </graph> </field> </record> diff --git a/addons/project/report/project_report.py b/addons/project/report/project_report.py index ed086b4318d..5a473469b2d 100644 --- a/addons/project/report/project_report.py +++ b/addons/project/report/project_report.py @@ -29,8 +29,6 @@ class report_project_task_user(osv.osv): _auto = False _columns = { 'name': fields.char('Task Summary', size=128, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'year': fields.char('Year', size=64, required=False, readonly=True), 'user_id': fields.many2one('res.users', 'Assigned To', readonly=True), 'date_start': fields.date('Assignation Date', readonly=True), 'no_of_days': fields.integer('# of Days', size=128, readonly=True), @@ -52,7 +50,6 @@ class report_project_task_user(osv.osv): 'nbr': fields.integer('# of tasks', readonly=True), 'priority': fields.selection([('4', 'Very Low'), ('3', 'Low'), ('2', 'Medium'), ('1', 'Urgent'), ('0', 'Very urgent')], string='Priority', readonly=True), - 'month':fields.selection(fields.date.MONTHS, 'Month', readonly=True), 'state': fields.selection([('draft', 'Draft'), ('open', 'In Progress'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')],'Status', readonly=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True), 'partner_id': fields.many2one('res.partner', 'Contact', readonly=True), @@ -67,9 +64,6 @@ class report_project_task_user(osv.osv): SELECT (select 1 ) AS nbr, t.id as id, - to_char(date_start, 'YYYY') as year, - to_char(date_start, 'MM') as month, - to_char(date_start, 'YYYY-MM-DD') as day, date_trunc('day',t.date_start) as date_start, date_trunc('day',t.date_end) as date_end, date_trunc('day',t.date_last_stage_update) as date_last_stage_update, @@ -102,9 +96,6 @@ class report_project_task_user(osv.osv): total_hours, planned_hours, hours_delay, - year, - month, - day, create_date, write_date, date_start, diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml index 6fb4e24e7ad..aced63a34d6 100644 --- a/addons/project/report/project_report_view.xml +++ b/addons/project/report/project_report_view.xml @@ -11,8 +11,12 @@ <field name="model">report.project.task.user</field> <field name="arch" type="xml"> <graph string="Tasks Analysis" type="pivot"> - <field name="name" type="row"/> + <field name="project_id" type="row"/> + <field name="nbr" type="measure"/> <field name="no_of_days" type="measure"/> + <field name="total_hours" type="measure"/> + <field name="hours_planned" type="measure"/> + <field name="remaining_hours" type="measure"/> </graph> </field> </record> @@ -44,9 +48,9 @@ <filter string="Contact" context="{'group_by':'partner_id'}" /> <filter string="Assigned to" name="User" context="{'group_by':'user_id'}" /> <filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/> - <filter string="Day" context="{'group_by':'day'}" help="Creation Date"/> - <filter string="Month" context="{'group_by':'month'}" help="Creation Date"/> - <filter string="Year" context="{'group_by':'year'}" help="Creation Date"/> + <filter string="Assignation date (day)" context="{'group_by':'date_start:day'}" help="Creation Date"/> + <filter string="Assignation date (month)" context="{'group_by':'date_start:month'}" help="Creation Date"/> + <filter string="Assignation date (year)" context="{'group_by':'date_start:year'}" help="Creation Date"/> <filter string="Last Stage Update" context="{'group_by':'date_last_stage_update'}" help="Last Stage Update"/> </group> </search> @@ -59,7 +63,7 @@ <field name="view_type">form</field> <field name="view_mode">graph</field> <field name="search_view_id" ref="view_task_project_user_search"/> - <field name="context">{'search_default_year':1,'search_default_project':1,'group_by_no_leaf':1,'group_by':[]}</field> + <field name="context">{'group_by_no_leaf':1,'group_by':[]}</field> <field name="help">This report allows you to analyse the performance of your projects and users. You can analyse the quantities of tasks, the hours spent compared to the planned hours, the average number of days to open or close a task, etc.</field> </record> diff --git a/addons/purchase/board_purchase_view.xml b/addons/purchase/board_purchase_view.xml index d491985cf52..a317138a310 100644 --- a/addons/purchase/board_purchase_view.xml +++ b/addons/purchase/board_purchase_view.xml @@ -17,15 +17,12 @@ <field name="model">purchase.report</field> <field name="arch" type="xml"> <tree string="Monthly Purchase by Category"> - <field name="month"/> <field name="category_id"/> <field name="price_total"/> <field name="user_id" invisible="1"/> <field name="partner_id" invisible="1"/> <field name="product_id" invisible="1"/> <field name="product_uom" invisible="1"/> - <field name="day" invisible="1"/> - <field name="name" invisible="1"/> <field name="warehouse_id" invisible="1"/> <field name="validator" invisible="1"/> <field name="company_id" invisible="1"/> @@ -39,9 +36,9 @@ <field name="model">purchase.report</field> <field name="arch" type="xml"> <graph string="Monthly Purchase by Category" type="bar"> - <field name="month"/> - <field name="price_total" operator="+"/> - <field name="category_id" group="True"/> + <field name="date" interval="month" type="row"/> + <field name="category_id" type="col"/> + <field name="price_total" type="measure"/> </graph> </field> </record> @@ -50,7 +47,7 @@ <field name="res_model">purchase.report</field> <field name="view_type">form</field> <field name="view_mode">graph,tree</field> - <field name="context">{'group_by':['month','category_id'],'group_by_no_leaf':1}</field> + <field name="context">{'group_by_no_leaf':1}</field> <field name="domain">[('state','in',('approved','except_picking','except_invoice','done'))]</field> <field name="view_id" ref="view_purchase_order_monthly_categ_graph"></field> </record> diff --git a/addons/purchase/report/purchase_report.py b/addons/purchase/report/purchase_report.py index f6a37bb37a7..ada1d83cdaf 100644 --- a/addons/purchase/report/purchase_report.py +++ b/addons/purchase/report/purchase_report.py @@ -32,8 +32,6 @@ class purchase_report(osv.osv): _auto = False _columns = { 'date': fields.date('Order Date', readonly=True, help="Date on which this document has been created"), - 'name': fields.char('Year',size=64,required=False, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), 'state': fields.selection([('draft', 'Request for Quotation'), ('confirmed', 'Waiting Supplier Ack'), ('approved', 'Approved'), @@ -60,12 +58,10 @@ class purchase_report(osv.osv): 'negociation': fields.float('Purchase-Standard Price', readonly=True, group_operator="avg"), 'price_standard': fields.float('Products Value', readonly=True, group_operator="sum"), 'nbr': fields.integer('# of Lines', readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), - ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), 'category_id': fields.many2one('product.category', 'Category', readonly=True) } - _order = 'name desc,price_total desc' + _order = 'date desc, price_total desc' def init(self, cr): tools.sql.drop_view_if_exists(cr, 'purchase_report') cr.execute(""" @@ -73,9 +69,6 @@ class purchase_report(osv.osv): select min(l.id) as id, s.date_order as date, - to_char(s.date_order, 'YYYY') as name, - to_char(s.date_order, 'MM') as month, - to_char(s.date_order, 'YYYY-MM-DD') as day, s.state, s.date_approve, s.minimum_planned_date as expected_date, @@ -121,9 +114,6 @@ class purchase_report(osv.osv): l.product_id, t.categ_id, s.date_order, - to_char(s.date_order, 'YYYY'), - to_char(s.date_order, 'MM'), - to_char(s.date_order, 'YYYY-MM-DD'), s.state, s.warehouse_id, u.uom_type, diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml index baaf2f8312c..50b22f40a05 100644 --- a/addons/purchase/report/purchase_report_view.xml +++ b/addons/purchase/report/purchase_report_view.xml @@ -6,7 +6,12 @@ <field name="model">purchase.report</field> <field name="arch" type="xml"> <graph string="Purchase Orders Statistics" type="pivot"> + <field name="partner_id" type="row"/> <field name="product_id" type="row"/> + <field name="nbr" type="measure"/> + <field name="quantity" type="measure"/> + <field name="price_average" type="measure"/> + <field name="price_standard" type="measure"/> <field name="price_total" type="measure"/> </graph> </field> @@ -43,66 +48,24 @@ <filter string="Destination" icon="terp-gtk-jump-to-ltr" context="{'group_by':'location_id'}"/> <filter string="Status" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/> <filter string="Company" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/> - <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Order of Day"/> - <filter string="Month" icon="terp-go-month" context="{'group_by':'month'}" help="Order of Month"/> - <filter string="Year" icon="terp-go-year" context="{'group_by':'name'}" help="Order of Year"/> + <filter string="Order Date (day)" icon="terp-go-today" context="{'group_by':'date:day'}" help="Order of Day"/> + <filter string="Order Date (month)" icon="terp-go-month" context="{'group_by':'date:month'}" help="Order of Day"/> + <filter string="Order Date (year)" icon="terp-go-year" context="{'group_by':'date:year'}" help="Order of Day"/> </group> </search> </field> </record> - <record model="ir.ui.view" id="view_purchase_order_qty_amount_graph"> - <field name="name">purchase.order.qty.amount.graph</field> - <field name="model">purchase.report</field> - <field name="arch" type="xml"> - <graph string="Total Qty and Amount by month" type="bar"> - <field name="month"/> - <field name="quantity" operator="+"/> - <field name="price_total" operator="+"/> - </graph> - </field> - </record> - - <record model="ir.ui.view" id="view_purchase_order_by_user_graph"> - <field name="name">purchase.order.by.user.graph</field> - <field name="model">purchase.report</field> - <field name="arch" type="xml"> - <graph string="Total Orders Lines by User per month" orientation="vertical" type="bar"> - <field name="month" /> - <field name="nbr" operator="+"/> - <field name="user_id" group="True" /> - </graph> - </field> - </record> - - <record id="action_purchase_order_report_all" model="ir.actions.act_window"> <field name="name">Purchase Analysis</field> <field name="res_model">purchase.report</field> <field name="view_type">form</field> <field name="view_mode">graph</field> <field name="view_id" ref="view_purchase_order_graph"></field> - <field name="context">{'search_default_year':1,'search_default_month':1,'search_default_group_partner_id':1,'search_default_group_product_id': 1, 'search_default_orders': 1, 'group_by_no_leaf':1,'group_by':[]}</field> + <field name="context">{'search_default_year':1,'search_default_month':1, 'search_default_orders': 1, 'group_by_no_leaf':1,'group_by':[]}</field> <field name="help">Purchase Analysis allows you to easily check and analyse your company purchase history and performance. From this menu you can track your negotiation performance, the delivery performance of your suppliers, etc.</field> </record> - <record id="action_purchase_order_report_graph" model="ir.actions.act_window"> - <field name="name">Total Qty and Amount by month</field> - <field name="res_model">purchase.report</field> - <field name="view_type">form</field> - <field name="view_mode">graph</field> - <field name="view_id" ref="view_purchase_order_qty_amount_graph"></field> - </record> - - <record id="action_purchase_order_by_user_all" model="ir.actions.act_window"> - <field name="name">Total Orders by User per month</field> - <field name="res_model">purchase.report</field> - <field name="view_type">form</field> - <field name="view_mode">graph</field> - <field name="view_id" ref="view_purchase_order_by_user_graph"></field> - </record> - - <menuitem id="base.next_id_73" name="Purchase" parent="base.menu_reporting" sequence="10" groups="purchase.group_purchase_manager"/> <menuitem action="action_purchase_order_report_all" id="menu_action_purchase_order_report_all" parent="base.next_id_73" sequence="3"/> @@ -113,6 +76,7 @@ <field name="view_type">form</field> <field name="view_mode">graph</field> <field name="search_view_id" ref="stock.view_stock_search"/> + <field name="view_id" ref="stock.view_stock_graph"/> <field name="context">{'full':'1','contact_display': 'partner','search_default_done':1, 'search_default_month':1, 'search_default_group_type':1, 'group_by': [], 'group_by_no_leaf':1,'search_default_year':1,}</field> <field name="help">Reception Analysis allows you to easily check and analyse your company order receptions and the performance of your supplier's deliveries.</field> </record> diff --git a/addons/sale/board_sale_view.xml b/addons/sale/board_sale_view.xml index 021e0c140af..0ad4a6774fc 100644 --- a/addons/sale/board_sale_view.xml +++ b/addons/sale/board_sale_view.xml @@ -17,7 +17,7 @@ <field name="priority" eval="32"/> <field name="arch" type="xml"> <tree string="Monthly Turnover"> - <field name="month"/> + <field name="date" interval="month"/> <field name="price_total"/> </tree> </field> @@ -28,7 +28,7 @@ <field name="priority" eval="32"/> <field name="arch" type="xml"> <graph string="Monthly Turnover" type="bar"> - <field name="month" type="row"/> + <field name="date" interval="month" type="row"/> <field name="price_total" type="measure"/> </graph> </field> @@ -40,8 +40,8 @@ <field name="view_type">form</field> <field name="view_mode">graph,tree</field> <field name="view_id" ref="view_turnover_by_month_graph"/> - <field name="domain">[('year','ilike',time.strftime('%Y')),('user_id','=',uid)]</field> - <field name="context">{'group_by_no_leaf':1,'group_by':['month']}</field> + <field name="domain">[('date','<=', time.strftime('%Y-%m-%d')),('date','>=',time.strftime('%Y-01-01')),('user_id','=',uid)]</field> + <field name="context">{'group_by_no_leaf':1}</field> </record> <record id="board_sales_form" model="ir.ui.view"> diff --git a/addons/stock/board_warehouse_view.xml b/addons/stock/board_warehouse_view.xml index a1f327eab5d..136d8991a99 100644 --- a/addons/stock/board_warehouse_view.xml +++ b/addons/stock/board_warehouse_view.xml @@ -7,9 +7,9 @@ <field name="model">report.stock.move</field> <field name="arch" type="xml"> <graph string="Moves Analysis" type="bar" stacked="True"> - <field name="day" type="row"/> - <field name="product_qty" type="measure"/> + <field name="date" interval="day" type="row"/> <field name="categ_id" type="row"/> + <field name="product_qty" type="measure"/> </graph> </field> </record> @@ -19,7 +19,7 @@ <field name="res_model">report.stock.move</field> <field name="view_type">form</field> <field name="view_mode">graph,tree</field> - <field name="domain">[('type','=','in'),('day','<=', time.strftime('%Y-%m-%d')),('day','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))]</field> + <field name="domain">[('type','=','in'),('date','<=', time.strftime('%Y-%m-%d')),('date','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))]</field> <field name="view_id" ref="view_stock_graph_board"></field> <field name="context">{'search_default_in':1}</field> </record> @@ -28,7 +28,7 @@ <field name="res_model">report.stock.move</field> <field name="view_type">form</field> <field name="view_mode">graph,tree</field> - <field name="domain">[('type','=','out'),('day','<=', time.strftime('%Y-%m-%d')),('day','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))]</field> + <field name="domain">[('type','=','out'),('date','<=', time.strftime('%Y-%m-%d')),('date','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))]</field> <field name="view_id" ref="view_stock_graph_board"></field> <field name="context">{'search_default_out':1}</field> </record> diff --git a/addons/stock/report/report_stock_move.py b/addons/stock/report/report_stock_move.py index db9ea187260..1b183f5fcbd 100644 --- a/addons/stock/report/report_stock_move.py +++ b/addons/stock/report/report_stock_move.py @@ -30,11 +30,6 @@ class report_stock_move(osv.osv): _auto = False _columns = { 'date': fields.date('Date', readonly=True), - 'year': fields.char('Year', size=4, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True), 'product_id':fields.many2one('product.product', 'Product', readonly=True), 'company_id':fields.many2one('res.company', 'Company', readonly=True), @@ -63,9 +58,6 @@ class report_stock_move(osv.osv): SELECT min(sm.id) as id, date_trunc('day', sm.date) as date, - to_char(date_trunc('day',sm.date), 'YYYY') as year, - to_char(date_trunc('day',sm.date), 'MM') as month, - to_char(date_trunc('day',sm.date), 'YYYY-MM-DD') as day, avg(date(sm.date)-date(sm.create_date)) as day_diff, avg(date(sm.date_expected)-date(sm.create_date)) as day_diff1, avg(date(sm.date)-date(sm.date_expected)) as day_diff2, @@ -115,8 +107,7 @@ class report_stock_move(osv.osv): coalesce(sp.type, 'other'), date_trunc('day', sm.date), sm.partner_id, sm.state, sm.product_uom, sm.date_expected, sm.product_id, pt.standard_price, sm.picking_id, - sm.company_id, sm.location_id, sm.location_dest_id, pu.factor, pt.categ_id, sp.stock_journal_id, - year, month, day + sm.company_id, sm.location_id, sm.location_dest_id, pu.factor, pt.categ_id, sp.stock_journal_id ) """) diff --git a/addons/stock/report/report_stock_move_view.xml b/addons/stock/report/report_stock_move_view.xml index fa578a82309..452cfd1b3e6 100644 --- a/addons/stock/report/report_stock_move_view.xml +++ b/addons/stock/report/report_stock_move_view.xml @@ -16,6 +16,9 @@ <graph string="Moves Analysis" type="pivot"> <field name="product_id" type="row"/> <field name="product_qty" type="measure"/> + <field name="product_qty_in" type="measure"/> + <field name="product_qty_out" type="measure"/> + <field name="value" type="measure"/> </graph> </field> </record> @@ -52,9 +55,9 @@ <filter string="Status" name="group_state" icon="terp-stock_effects-object-colorize" context="{'group_by':'state'}"/> <filter string="Stock journal" name="group_stock_journal" icon="terp-folder-orange" context="{'group_by':'stock_journal'}"/> <filter string="Company" name="group_state" icon="terp-go-home" context="{'group_by':'company_id'}" groups="base.group_multi_company"/> - <filter string="Day" icon="terp-go-today" context="{'group_by':'day'}" help="Day Planned"/> - <filter string="Month" icon="terp-go-month" context="{'group_by':'date'}" help="Month Planned"/> - <filter string="Year" icon="terp-go-year" context="{'group_by':'year'}" help="Year Planned"/> + <filter string="Date Planned (day)" icon="terp-go-day" context="{'group_by':'date:day'}" help="Day Planned"/> + <filter string="Date Planned (month)" icon="terp-go-month" context="{'group_by':'date:month'}" help="Month Planned"/> + <filter string="Date Planned (year)" icon="terp-go-year" context="{'group_by':'date:year'}" help="Year Planned"/> </group> </search> </field> @@ -66,6 +69,7 @@ <field name="view_type">form</field> <field name="view_mode">graph</field> <field name="search_view_id" ref="view_stock_search"/> + <field name="view_id" ref="view_stock_graph"></field> <field name="context">{'contact_display': 'partner','search_default_done':1,'search_default_year':1, 'search_default_month':1, 'search_default_group_type':1, 'group_by': [], 'group_by_no_leaf':1,}</field> <field name="help">Moves Analysis allows you to easily check and analyse your company stock moves. Use this report when you want to analyse the different routes taken by your products and inventory management performance.</field> </record> @@ -78,6 +82,7 @@ <graph string="Inventory Analysis" type="pivot"> <field name="product_id" type="row"/> <field name="product_qty" type="measure"/> + <field name="value" type="measure"/> </graph> </field> </record> diff --git a/addons/website/__openerp__.py b/addons/website/__openerp__.py index 9161255c835..7779686c041 100644 --- a/addons/website/__openerp__.py +++ b/addons/website/__openerp__.py @@ -27,4 +27,5 @@ OpenERP Website CMS 'js': ['static/src/js/website.backend.js'], 'qweb' : ['static/src/xml/website.backend.xml'], 'css': ['static/src/css/website.backend.css'], + 'application': True, } diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index d8773e6ebfc..6948f102fec 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -106,7 +106,7 @@ class ir_http(orm.AbstractModel): code = getattr(exception, 'code', code) if isinstance(exception, ir_qweb.QWebException): values.update(qweb_exception=exception) - if isinstance(exception.qweb.get('inner'), openerp.exceptions.AccessError): + if isinstance(exception.qweb.get('cause'), openerp.exceptions.AccessError): code = 403 if code == 500: logger.error("500 Internal Server Error:\n\n%s", values['traceback']) diff --git a/addons/website/static/description/index.html b/addons/website/static/description/index.html index 80cb043b07e..57393345bb6 100644 --- a/addons/website/static/description/index.html +++ b/addons/website/static/description/index.html @@ -6,10 +6,7 @@ </div> <div class="oe_span6"> <div class="oe_demo oe_picture oe_screenshot"> - <a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=website"> - <img src="website_home.png"> - </a> - <div class="oe_demo_footer oe_centeralign">Online Demo</div> + <iframe width="361" height="200" src="//www.youtube.com/embed/pp7OCqWoRjQ" frameborder="0" allowfullscreen></iframe> </div> </div> <div class="oe_span6"> @@ -57,7 +54,7 @@ <h2 class="oe_slogan">Awesome. Astonishingly Beautiful.</h2> <h3 class="oe_slogan">Design using clean building blocks</h3> <div class="oe_span6"> - <img class="oe_picture oe_screenshot" src="website_theme.png"> + <iframe width="361" height="200" src="//www.youtube.com/embed/eGLs9oq_Me4" frameborder="0" allowfullscreen></iframe> </div> <div class="oe_span6"> <p class='oe_mt32'> @@ -133,7 +130,7 @@ </div> <div class="oe_span6"> <div class="oe_bg_img"> - <img class="oe_picture oe_screenshot" src="website_seo.png"> + <iframe width="361" height="200" src="//www.youtube.com/embed/5PKqZpl0TcA" frameborder="0" allowfullscreen></iframe> </div> </div> </div> diff --git a/addons/website/static/src/js/website.tour.js b/addons/website/static/src/js/website.tour.js index d0611419904..39eaa5b7279 100644 --- a/addons/website/static/src/js/website.tour.js +++ b/addons/website/static/src/js/website.tour.js @@ -17,7 +17,7 @@ website.EditorBar.include({ var $menuItem = $($.parseHTML('<li><a href="#">'+tour.name+'</a></li>')); $menuItem.click(function () { tour.reset(); - tour.trigger(); + tour.run(); }); menu.append($menuItem); }); @@ -100,20 +100,29 @@ website.Tour = openerp.Class.extend({ this.registerSteps(); }, - run: function (automatic, force) { - if (force) this.reset(); + run: function (automatic) { + this.reset(); for (var k in this.localStorage) { if (!k.indexOf("tour-") && k.indexOf("-test") > -1) return; } - // only one test running - if (website.Tour.busy) return; - website.Tour.busy = true; - this.localStorage.setItem("tour-"+this.id+"-test", 0); - website.Tour.waitReady.call(this, function () {this._run(automatic, force);}); + if (automatic) { + this.localStorage.setItem("tour-"+this.id+"-test-automatic", true); + } + + // redirect to begin of the tour + if (this.path) { + var path = this.path.split('?'); + window.location.href = path[0] + "?tutorial."+this.id+"=true" + path.slice(1, path.length).join("?"); + return; + } + + var self = this; + this.localStorage.setItem("tour-"+this.id+"-test", 0); + website.Tour.waitReady.call(this, function () {self._running();}); }, running: function () { if (+this.localStorage.getItem("tour-"+this.id+"-test") >= this.steps.length) { @@ -121,33 +130,29 @@ website.Tour = openerp.Class.extend({ return; } - if (website.Tour.busy || !this.testUrl()) return; + if (website.Tour.is_busy() || !this.testUrl()) return; - var self = this; - website.Tour.waitReady.call(this, function () { - self._running(); - }, 500); - }, + // launch tour with url + this.checkRunningUrl(); - _run: function (automatic, force) { - this.reset(); - this.localStorage.setItem("tour-"+this.id+"-test", 0); - if (automatic) { - this.localStorage.setItem("tour-"+this.id+"-test-automatic", true); + // mark tour as busy (only one test running) + if (this.localStorage.getItem("tour-"+this.id+"-test") != null) { + website.Tour.busy = true; } - this.nextStep(null, automatic ? this.autoNextStep : null, automatic ? 5000 : null); + + var self = this; + website.Tour.waitReady.call(this, function () {self._running();}); }, + _running: function () { var stepId = this.localStorage.getItem("tour-"+this.id+"-test"); var automatic = !!this.localStorage.getItem("tour-"+this.id+"-test-automatic"); - if (stepId || this.checkRuningUrl()) { - + if (stepId != null) { if (!this.check(this.step(stepId))) { var step = this.next(stepId); stepId = step ? step.stepId : stepId; } - website.Tour.busy = true; this.nextStep(stepId, automatic ? this.autoNextStep : null, automatic ? 5000 : null); } }, @@ -168,22 +173,15 @@ website.Tour = openerp.Class.extend({ $('.popover.tour').remove(); }, - trigger: function (automatic) { - this.reset(); - if (this.path) { - this.localStorage.setItem("tour-"+this.id+"-test", 0); - if (automatic) this.localStorage.setItem("tour-"+this.id+"-test-automatic", true); - var path = this.path.split('?'); - window.location.href = path[0] + "?tutorial."+this.id+"=true" + path.slice(1, path.length).join("?"); - } else { - this.run(automatic); - } - }, + testUrl: function () { return !this.testPath || this.testPath.test(window.location.href); }, - checkRuningUrl: function () { - return window.location.search.indexOf("tutorial."+this.id+"=true") > -1; + checkRunningUrl: function () { + if (window.location.search.indexOf("tutorial."+this.id+"=true") > -1) { + this.localStorage.setItem("tour-"+this.id+"-test", 0); + window.location.href = window.location.href.replace(/tutorial.+=true&?/, ''); + } }, registerSteps: function () { @@ -430,7 +428,15 @@ website.Tour.waitReady = function (callback) { }); }; website.Tour.run_test = function (id) { - website.Tour.get(id).trigger(true); + website.Tour.get(id).run(true); +}; +website.Tour.is_busy = function () { + for (var k in this.localStorage) { + if (!k.indexOf("tour-")) { + return true; + } + } + return website.Tour.busy; }; diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index 96484882577..15973a55016 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -58,7 +58,6 @@ class WebsiteUiSuite(unittest.TestSuite): return iter([self]) def run(self, result): - return # clean slate if sql_db._Pool is not None: sql_db._Pool.close_all(sql_db.dsn(tools.config['db_name'])) diff --git a/addons/website/tests/ui_suite/ui_test_runner.js b/addons/website/tests/ui_suite/ui_test_runner.js index 507a8ca1e72..9a36d372f10 100644 --- a/addons/website/tests/ui_suite/ui_test_runner.js +++ b/addons/website/tests/ui_suite/ui_test_runner.js @@ -56,6 +56,16 @@ function run (test) { }; page.onConsoleMessage = function(message) { console.log(message); + try { + var result = JSON.parse(message); + if (result.event === 'success') { + phantom.exit(0); + } else { + phantom.exit(1); + } + } catch (exception) { + phantom.exit(1); + } }; page.onCallback = function(data) { diff --git a/addons/website/views/themes.xml b/addons/website/views/themes.xml index c9c3d910ffb..f56ab2b5dd7 100644 --- a/addons/website/views/themes.xml +++ b/addons/website/views/themes.xml @@ -18,7 +18,7 @@ Have a look at <a href="/">your homepage</a> or try another theme below. </p> </div> - <h1 class="text-center">Try a New Bootswatch Theme</h1> + <h1 class="text-center">Try a New Theme</h1> <h3 class="text-center text-muted">You'll be able to change the theme at anytime</h3> <div class="row mt32" id="themes-list"> diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 8f9be7a6a4d..ebcd52c6b67 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -469,9 +469,9 @@ </div> <div id="error_qweb" class="panel-collapse collapse"> <div class="panel-body"> - <p> + <p t-if="exception.qweb.get('message')"> <strong>Error message:</strong> - <pre t-esc="exception.qweb['message']"/> + <pre t-esc="exception.qweb.get('message')"/> </p> <p> The error occured while rendering the template <code t-esc="qweb_exception.qweb.get('template')"/> @@ -577,7 +577,7 @@ <div class="container" t-if="views"> <div class="alert alert-danger" t-if="qweb_exception and editable"> <h4>Template fallback</h4> - <p>An error occured while rendering the template <code t-esc="qweb_exception.template"/>.</p> + <p>An error occured while rendering the template <code t-esc="qweb_exception.qweb['template']"/>.</p> <p>If this error is caused by a change of yours in the templates, you have the possibility to reset one or more templates to their <strong>factory settings</strong>.</p> <form action="/website/reset_templates" method="post"> <ul class="oe_template_fallback"> diff --git a/addons/website_blog/__openerp__.py b/addons/website_blog/__openerp__.py index 1a10183ac78..97c163945af 100644 --- a/addons/website_blog/__openerp__.py +++ b/addons/website_blog/__openerp__.py @@ -49,4 +49,5 @@ OpenERP Blog 'static/src/xml/*.xml' ], 'installable': True, + 'application': True, } diff --git a/addons/website_blog/static/description/index.html b/addons/website_blog/static/description/index.html index d25e8f33cc1..7ca5b48ae55 100644 --- a/addons/website_blog/static/description/index.html +++ b/addons/website_blog/static/description/index.html @@ -138,7 +138,7 @@ <h3 class="oe_slogan">Attract new visitors with a good referencing</h3> <div class="oe_span6"> <div class="oe_bg_img"> - <img class="oe_picture oe_screenshot" src="website_seo.png"> + <iframe width="361" height="200" src="//www.youtube.com/embed/5PKqZpl0TcA" frameborder="0" allowfullscreen></iframe> </div> </div> <div class="oe_span6"> @@ -173,7 +173,7 @@ </div> <div class="oe_span6"> <div class="oe_row_img oe_centered"> - <img class="oe_picture oe_screenshot" src="website_theme.png"> + <iframe width="361" height="200" src="//www.youtube.com/embed/eGLs9oq_Me4" frameborder="0" allowfullscreen></iframe> </div> </div> </div> diff --git a/addons/website_blog/static/src/js/website.tour.blog.js b/addons/website_blog/static/src/js/website.tour.blog.js index 5e7a7888b89..1bd9f22fa31 100644 --- a/addons/website_blog/static/src/js/website.tour.blog.js +++ b/addons/website_blog/static/src/js/website.tour.blog.js @@ -13,7 +13,7 @@ website.BlogTour = website.Tour.extend({ id: 'blog', name: "Create a blog post", - testPath: /\/blogpost\/[0-9]+\//, + testPath: /\/(blog|blogpost)\/[0-9]+\//, init: function (editor) { var self = this; self.steps = [ diff --git a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml index 3afa77581ac..cd06e515a3e 100644 --- a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml +++ b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml @@ -35,7 +35,7 @@ Contact a reseller </h2> </div> - <div class="col-md-4" id="partner_left"> + <div class="col-md-4 mb32" id="partner_left"> <h3>Resellers by Country</h3> <ul class="nav nav-pills nav-stacked mt16"> <t t-foreach="countries" t-as="country_dict"> @@ -86,7 +86,7 @@ </h3> <t t-set="internal_gid" t-value="partner_data['grade_id'][1]"/> </t> - <div class="media thumbnail"> + <div class="media"> <a class="pull-left" t-attf-href="/partners/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> <img class="media-object" t-attf-src="data:image/png;base64,#{partner_data['image_small']}"/> </a> diff --git a/addons/website_customer/views/website_customer.xml b/addons/website_customer/views/website_customer.xml index 00c3552c59e..ad924cba55d 100644 --- a/addons/website_customer/views/website_customer.xml +++ b/addons/website_customer/views/website_customer.xml @@ -23,7 +23,7 @@ </div> <div class="container"> <div class="row"> - <div class="col-md-3" id="ref_left_column"> + <div class="col-md-3 mb32" id="ref_left_column"> </div> <div class="col-md-9" id="ref_content"> <div class='navbar mb0'> @@ -43,7 +43,7 @@ <p>No result found.</p> </t> <t t-foreach="partners_data" t-as="partner_data" class="media"> - <div class="media thumbnail"> + <div class="media"> <a class="pull-left" t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> <img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/> </a> @@ -157,7 +157,7 @@ <xpath expr="//div[@id='right_column']" position="inside"> <t t-if="implemented_partners_data"> <h3 id="references">References</h3> - <div t-foreach="implemented_partners_data" t-as="partner_data" class="media thumbnail"> + <div t-foreach="implemented_partners_data" t-as="partner_data" class="media"> <a class="pull-left" t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> <img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/> </a> diff --git a/addons/website_event/__openerp__.py b/addons/website_event/__openerp__.py index b04758b0d55..2ccf74984a4 100644 --- a/addons/website_event/__openerp__.py +++ b/addons/website_event/__openerp__.py @@ -22,4 +22,5 @@ Online Events 'data/event_demo.xml' ], 'installable': True, + 'application': True, } diff --git a/addons/website_event/static/description/index.html b/addons/website_event/static/description/index.html index bf5f11ec300..b47dfc493a8 100644 --- a/addons/website_event/static/description/index.html +++ b/addons/website_event/static/description/index.html @@ -43,7 +43,7 @@ </div> <div class="oe_span6"> <div class="oe_bg_img oe_centered"> - <img class="oe_picture oe_screenshot" src="event_bottom.png"> + <iframe width="361" height="200" src="//www.youtube.com/embed/eGLs9oq_Me4" frameborder="0" allowfullscreen></iframe> </div> </div> </div> diff --git a/addons/website_membership/views/website_membership.xml b/addons/website_membership/views/website_membership.xml index 644d893b600..94a7c95fb5d 100644 --- a/addons/website_membership/views/website_membership.xml +++ b/addons/website_membership/views/website_membership.xml @@ -28,7 +28,7 @@ <div class="container"> <div class="row"> - <div class="col-md-4" id="left_column"> + <div class="col-md-4 mb32" id="left_column"> <ul class="nav nav-pills nav-stacked mt16"> <li class="nav-header"><h3>Associations</h3></li> <li t-att-class="'' if membership else 'active'"><a href="/members/">All</a></li> @@ -60,7 +60,7 @@ <h3 class="text-center"><span t-field="membership_line_id.membership_id"/></h3> </t> <t t-set="partner_data" t-value="partners_data[membership_line_id.partner.id]"/> - <div class="media thumbnail"> + <div class="media"> <a class="pull-left" t-attf-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> <img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/> </a> diff --git a/addons/website_sale/__openerp__.py b/addons/website_sale/__openerp__.py index a30da144b1f..121bb519103 100644 --- a/addons/website_sale/__openerp__.py +++ b/addons/website_sale/__openerp__.py @@ -22,4 +22,5 @@ OpenERP E-Commerce ], 'qweb': ['static/src/xml/*.xml'], 'installable': True, + 'application': True, } diff --git a/addons/website_sale/static/description/blog.png b/addons/website_sale/static/description/blog.png Binary files differnew file mode 100644 index 00000000000..45da50990f4 --- /dev/null +++ b/addons/website_sale/static/description/blog.png diff --git a/addons/website_sale/static/description/index.html b/addons/website_sale/static/description/index.html index 5fa05560836..1e57bf6c23d 100644 --- a/addons/website_sale/static/description/index.html +++ b/addons/website_sale/static/description/index.html @@ -6,10 +6,7 @@ </div> <div class="oe_span6"> <div class="oe_demo oe_picture oe_screenshot"> - <a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=website_sale"> - <img src="website_sale_home.png"> - </a> - <div class="oe_demo_footer oe_centeralign">Online Demo</div> + <iframe width="361" height="200" src="//www.youtube.com/embed/pp7OCqWoRjQ" frameborder="0" allowfullscreen></iframe> </div> </div> <div class="oe_span6"> @@ -46,7 +43,7 @@ </div> <div class="oe_span6"> <div class="oe_bg_img oe_centered"> - <img class="oe_picture oe_screenshot" src="website_sale_product.png"> + <iframe width="361" height="200" src="//www.youtube.com/embed/eGLs9oq_Me4" frameborder="0" allowfullscreen></iframe> </div> </div> </div> @@ -315,7 +312,7 @@ <a href="/apps/website_blog"> <h3>Blogs</h3> <div class="oe_row_img oe_centered"> - <img class="oe_picture oe_screenshot" src=""> + <img class="oe_picture oe_screenshot" src="blog.png"> </div> </a> <p> diff --git a/addons/website_sale/tests/test_ui.py b/addons/website_sale/tests/test_ui.py index 72b948830b1..2953a5a2166 100644 --- a/addons/website_sale/tests/test_ui.py +++ b/addons/website_sale/tests/test_ui.py @@ -2,7 +2,7 @@ import openerp.addons.website.tests.test_ui as test_ui def load_tests(loader, base, _): base.addTest(test_ui.WebsiteUiSuite(test_ui.full_path(__file__,'website_sale-sale_process-test.js'), - { 'action': 'website.action_website_homepage' })) + {'redirect': '/page/website.homepage'})) base.addTest(test_ui.WebsiteUiSuite(test_ui.full_path(__file__,'website_sale-sale_process-test-2.js'), - { 'action': 'website.action_website_homepage' })) + {'redirect': '/page/website.homepage'})) return base
\ No newline at end of file |
