Merge trunk

bzr revid: ddm@openerp.com-20140131171707-62mipquizz9k36ko
This commit is contained in:
ddm@openerp.com 2014-01-31 18:17:07 +01:00
commit c5da05715c
53 changed files with 265 additions and 320 deletions

View File

@ -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,

View File

@ -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>

View File

@ -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,

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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,

View File

@ -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>

View File

@ -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,

View File

@ -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>

View File

@ -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>

View File

@ -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'],
}

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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)

View File

@ -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 """

View File

@ -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>

View File

@ -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,

View File

@ -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">

View File

@ -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));
"""
}

View File

@ -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)""")

View File

@ -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','&lt;=', time.strftime('%%Y-%%m-%%d')),('date','&gt;=',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"/>

View File

@ -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']);

View File

@ -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(){

View File

@ -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>

View File

@ -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,

View File

@ -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>

View File

@ -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>

View File

@ -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,

View File

@ -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>

View File

@ -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','&lt;=', time.strftime('%Y-%m-%d')),('date','&gt;=',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">

View File

@ -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','&lt;=', time.strftime('%Y-%m-%d')),('day','&gt;',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))]</field>
<field name="domain">[('type','=','in'),('date','&lt;=', time.strftime('%Y-%m-%d')),('date','&gt;',(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','&lt;=', time.strftime('%Y-%m-%d')),('day','&gt;',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))]</field>
<field name="domain">[('type','=','out'),('date','&lt;=', time.strftime('%Y-%m-%d')),('date','&gt;',(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>

View File

@ -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
)
""")

View File

@ -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>

View File

@ -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,
}

View File

@ -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'])

View File

@ -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>

View File

@ -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">

View File

@ -468,9 +468,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')"/>
@ -576,7 +576,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">

View File

@ -49,4 +49,5 @@ OpenERP Blog
'static/src/xml/*.xml'
],
'installable': True,
'application': True,
}

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -22,4 +22,5 @@ Online Events
'data/event_demo.xml'
],
'installable': True,
'application': True,
}

View File

@ -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>

View File

@ -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>

View File

@ -22,4 +22,5 @@ OpenERP E-Commerce
],
'qweb': ['static/src/xml/*.xml'],
'installable': True,
'application': True,
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -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>