[IMP]:sale,purchase:Improved SQL Reports.

bzr revid: apa@tinyerp.com-20100407073457-ht3odfppeo46fim3
This commit is contained in:
apa-tiny
2010-04-07 13:04:57 +05:30
parent 3a13731d07
commit 3681d53a91
4 changed files with 52 additions and 8 deletions
+12 -6
View File
@@ -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"/>
+5 -1
View File
@@ -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()
+15
View File
@@ -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>