commit
c5da05715c
|
@ -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,
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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'],
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 """
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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));
|
||||
"""
|
||||
}
|
||||
|
|
|
@ -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)""")
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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']);
|
||||
|
|
|
@ -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(){
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
)
|
||||
""")
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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'])
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -49,4 +49,5 @@ OpenERP Blog
|
|||
'static/src/xml/*.xml'
|
||||
],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -22,4 +22,5 @@ Online Events
|
|||
'data/event_demo.xml'
|
||||
],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 |
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue