[IMP]:sale,purchase:Improved SQL Reports.
bzr revid: apa@tinyerp.com-20100407073457-ht3odfppeo46fim3
This commit is contained in:
@@ -43,9 +43,15 @@ class report_purchase_order(osv.osv):
|
||||
('done','Done'),
|
||||
('cancel','Cancel')
|
||||
], 'Order State', readonly=True),
|
||||
'invoice_method': fields.selection([
|
||||
('manual','Manual'),
|
||||
('order','From Order'),
|
||||
('picking','From Picking')
|
||||
],'Invoicing Control', readonly=True),
|
||||
'product_id':fields.many2one('product.product', 'Product', readonly=True),
|
||||
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', readonly=True),
|
||||
'category_id': fields.many2one('product.category', 'Categories', readonly=True),
|
||||
'location_id': fields.many2one('stock.location', 'Destination', readonly=True),
|
||||
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position',readonly=True),
|
||||
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
|
||||
'company_id':fields.many2one('res.company', 'Company', readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'Responsible', readonly=True),
|
||||
@@ -70,24 +76,24 @@ class report_purchase_order(osv.osv):
|
||||
s.state,
|
||||
s.warehouse_id as warehouse_id,
|
||||
s.partner_id as partner_id,
|
||||
s.fiscal_position,
|
||||
s.create_uid as user_id,
|
||||
s.company_id as company_id,
|
||||
s.invoice_method,
|
||||
l.product_id,
|
||||
t.categ_id as category_id,
|
||||
s.location_id as location_id,
|
||||
sum(l.product_qty*u.factor) as quantity,
|
||||
count(*) as nbr,
|
||||
sum(l.product_qty*l.price_unit) as price_total,
|
||||
(sum(l.product_qty*l.price_unit)/sum(l.product_qty*u.factor))::decimal(16,2) as price_average
|
||||
from purchase_order s
|
||||
left join purchase_order_line l on (s.id=l.order_id)
|
||||
left join product_product p on (p.id=l.product_id)
|
||||
left join product_template t on (t.id=p.product_tmpl_id)
|
||||
left join product_uom u on (u.id=l.product_uom)
|
||||
where l.product_id is not null
|
||||
group by s.company_id,s.create_uid,s.partner_id,
|
||||
t.categ_id,l.product_id,s.date_order,
|
||||
s.location_id,l.product_id,s.date_order,
|
||||
to_char(s.date_order, 'YYYY'),to_char(s.date_order, 'MM'),s.state,
|
||||
s.warehouse_id
|
||||
s.warehouse_id,s.fiscal_position,s.invoice_method
|
||||
)
|
||||
""")
|
||||
report_purchase_order()
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
<field name="warehouse_id" invisible="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="location_id" invisible="1"/>
|
||||
<field name="fiscal_position" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -72,16 +74,32 @@
|
||||
<field name="product_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="1" string="Extended options..." colspan="10" col="12">
|
||||
<filter icon="terp-purchase" string="Manual" domain="[('invoice_method','=','manual')]"/>
|
||||
<filter icon="terp-purchase" string="From Order" domain="[('invoice_method','=','order')]"/>
|
||||
<filter icon="terp-purchase" string="From Picking" domain="[('invoice_method','=','picking')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter icon="terp-purchase" string="Waiting Schedule" domain="[('state','=','waiting_date')]"/>
|
||||
<filter icon="terp-purchase" string="Manual in progress" domain="[('state','=','manual')]"/>
|
||||
<filter icon="terp-purchase" string="In progress" domain="[('state','=','progress')]"/>
|
||||
<filter icon="terp-purchase" string="Shipping Exception" domain="[('state','=','shipping_except')]"/>
|
||||
<filter icon="terp-purchase" string="Invoice Exception" domain="[('state','=','invoice_except')]"/>
|
||||
<filter icon="terp-purchase" string="Done" domain="[('state','=','done')]"/>
|
||||
<filter icon="terp-purchase" string="Cancel" domain="[('state','=','cancel')]"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="1" string="Group By..." colspan="10" col="12">
|
||||
<filter string="Company" icon="terp-purchase" context="{'group_by':'company_id'}"/>
|
||||
<filter string="Warehouse" icon="terp-purchase" context="{'group_by':'warehouse_id'}"/>
|
||||
<filter string="Responsible" icon="terp-purchase" context="{'group_by':'user_id'}" default="1"/>
|
||||
<filter string="Location" icon="terp-purchase" context="{'group_by':'location_id'}"/>
|
||||
<filter string="Responsible" icon="terp-purchase" context="{'group_by':'user_id'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Product" icon="terp-purchase" context="{'group_by':'product_id'}"/>
|
||||
<filter string="Partner" icon="terp-purchase" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="State" icon="terp-purchase" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Fiscal Position" icon="terp-purchase" context="{'group_by':'fiscal_position'}"/>
|
||||
<filter string="Month" icon="terp-purchase" context="{'group_by':'date'}"/>
|
||||
<filter string="Year" icon="terp-purchase" context="{'group_by':'name'}"/>
|
||||
</group>
|
||||
@@ -95,6 +113,7 @@
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,graph</field>
|
||||
<field name="search_view_id" ref="view_purchase_order_search"/>
|
||||
<field name="context">{'search_default_user_id':True}</field>
|
||||
</record>
|
||||
|
||||
<menuitem id="base.next_id_73" name="Reporting" parent="base.menu_purchase_root" sequence="8"/>
|
||||
|
||||
@@ -39,6 +39,8 @@ class sale_report(osv.osv):
|
||||
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
|
||||
'shop_id':fields.many2one('sale.shop', 'Shop', readonly=True),
|
||||
'company_id':fields.many2one('res.company', 'Company', readonly=True),
|
||||
'payment_term': fields.many2one('account.payment.term', 'Payment Term',readonly=True),
|
||||
'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position',readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'Salesman', readonly=True),
|
||||
'price_total':fields.float('Total Price', readonly=True),
|
||||
'delay':fields.float('Avg Closing Days', digits=(16,2), readonly=True),
|
||||
@@ -70,6 +72,8 @@ class sale_report(osv.osv):
|
||||
s.partner_id as partner_id,
|
||||
s.user_id as user_id,
|
||||
s.shop_id as shop_id,
|
||||
s.fiscal_position as fiscal_position,
|
||||
s.payment_term as payment_term,
|
||||
s.company_id as company_id,
|
||||
extract(epoch from avg(s.date_confirm-s.create_date))/(24*60*60)::decimal(16,2) as delay,
|
||||
sum(l.product_uom_qty*l.price_unit) as price_total,
|
||||
@@ -84,7 +88,7 @@ class sale_report(osv.osv):
|
||||
group by
|
||||
s.date_order, s.partner_id, l.product_id,
|
||||
l.product_uom, s.user_id, s.state, s.shop_id,
|
||||
s.company_id
|
||||
s.company_id,s.fiscal_position,s.payment_term
|
||||
)
|
||||
""")
|
||||
sale_report()
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
<field name="price_average" avg="Average Price"/>
|
||||
<field name="price_total" sum="Total Price"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="fiscal_position" invisible="1"/>
|
||||
<field name="payment_term" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -72,6 +74,17 @@
|
||||
<field name="product_id"/>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="1" string="Extended options..." colspan="10" col="12">
|
||||
<filter icon="terp-sale" string="Waiting Schedule" domain="[('state','=','waiting_date')]"/>
|
||||
<filter icon="terp-sale" string="Manual In Progress" domain="[('state','=','manual')]"/>
|
||||
<filter icon="terp-sale" string="In Progress" domain="[('state','=','progress')]"/>
|
||||
<filter icon="terp-sale" string="Shipping Exception" domain="[('state','=','shipping_except')]"/>
|
||||
<filter icon="terp-sale" string="Invoice Exception" domain="[('state','=','invoice_except')]"/>
|
||||
<filter icon="terp-sale" string="Done" domain="[('state','=','done')]"/>
|
||||
<filter icon="terp-sale" string="Cancelled" domain="[('state','=','cancel')]"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<newline/>
|
||||
<group expand="1" string="Group By..." colspan="10" col="12">
|
||||
<filter string="Company" icon="terp-sale" context="{'group_by':'company_id'}"/>
|
||||
@@ -80,8 +93,10 @@
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Product" icon="terp-sale" context="{'group_by':'product_id'}"/>
|
||||
<filter string="Partner" icon="terp-sale" context="{'group_by':'partner_id'}"/>
|
||||
<filter string="Payment Term" icon="terp-sale" context="{'group_by':'payment_term'}"/>
|
||||
<filter string="State" icon="terp-sale" context="{'group_by':'state'}"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Fiscal Position" icon="terp-sale" context="{'group_by':'fiscal_position'}"/>
|
||||
<filter string="Month" icon="terp-sale" context="{'group_by':'date'}"/>
|
||||
<filter string="Year" icon="terp-sale" context="{'group_by':'year'}"/>
|
||||
</group>
|
||||
|
||||
Reference in New Issue
Block a user