From db92ea20a9528d5d82adc0885d1e8a8440673288 Mon Sep 17 00:00:00 2001 From: "sbh (Open ERP)" Date: Fri, 23 Apr 2010 15:23:26 +0530 Subject: [PATCH] Point_of_sale Task Id 578: add the report file and merge the code,remove the unused file bzr revid: sbh@tinyerp.com-20100423095326-87d65n0fgjmh8exh --- addons/point_of_sale/pos.py | 228 +---------------- addons/point_of_sale/report/__init__.py | 1 + .../report/point_of_sale_report.py | 242 ++++++++++++++++++ addons/point_of_sale/sale_wizard.xml | 6 - addons/point_of_sale/stock.py | 38 --- 5 files changed, 252 insertions(+), 263 deletions(-) create mode 100644 addons/point_of_sale/report/point_of_sale_report.py delete mode 100644 addons/point_of_sale/sale_wizard.xml delete mode 100644 addons/point_of_sale/stock.py diff --git a/addons/point_of_sale/pos.py b/addons/point_of_sale/pos.py index a68adbf59b6..ebabe10e48a 100644 --- a/addons/point_of_sale/pos.py +++ b/addons/point_of_sale/pos.py @@ -345,7 +345,7 @@ class pos_order(osv.osv): 'note_2': fields.char('Customer Note',size=64), 'type_rec': fields.char('Type of Receipt',size=64), 'remboursed': fields.boolean('Remboursed'), - 'contract_number': fields.char('Contract Number', size=512, select=1), + 'contract_number': fields.char('Contact Number', size=512, select=1), 'journal_entry': fields.boolean('Journal Entry'), } @@ -1298,224 +1298,6 @@ class pos_payment(osv.osv): pos_payment() - -class report_transaction_pos(osv.osv): - _name = "report.transaction.pos" - _description = "transaction for the pos" - _auto = False - _columns = { - 'date_create': fields.char('Date', size=16, readonly=True), - 'journal_id': fields.many2one('account.journal', 'Sales Journal', readonly=True), - 'jl_id': fields.many2one('account.journal', 'Cash Journals', readonly=True), - 'user_id': fields.many2one('res.users', 'User', readonly=True), - 'no_trans': fields.float('Number of Transaction', readonly=True), - 'amount': fields.float('Amount', readonly=True), - 'invoice_id': fields.float('Nbr Invoice', readonly=True), - 'invoice_am': fields.float('Invoice Amount', readonly=True), - 'product_nb': fields.float('Product Nb.', readonly=True), - 'disc': fields.float('Disc.', readonly=True), - } - - def init(self, cr): - tools.drop_view_if_exists(cr, 'report_transaction_pos') - cr.execute(""" - create or replace view report_transaction_pos as ( - select - min(absl.id) as id, - count(absl.id) as no_trans, - sum(absl.amount) as amount, - sum(line.price_ded) as disc, - to_char(date_trunc('day',absl.create_date),'YYYY-MM-DD')::text as date_create, - po.user_id as user_id, - po.sale_journal as journal_id, - abs.journal_id as jl_id, - count(po.invoice_id) as invoice_id, - count(p.id) as product_nb - from - account_bank_statement_line as absl, - account_bank_statement as abs, - product_product as p, - pos_order_line as line, - pos_order as po - where - absl.pos_statement_id = po.id and - line.order_id=po.id and - line.product_id=p.id and - absl.statement_id=abs.id - - group by - po.user_id,po.sale_journal, abs.journal_id, - to_char(date_trunc('day',absl.create_date),'YYYY-MM-DD')::text - ) - """) - #to_char(date_trunc('day',absl.create_date),'YYYY-MM-DD') - #to_char(date_trunc('day',absl.create_date),'YYYY-MM-DD')::text as date_create, -report_transaction_pos() - -class report_sales_by_user_pos(osv.osv): - _name = "report.sales.by.user.pos" - _description = "Sales by user" - _auto = False - _columns = { - 'date_order': fields.date('Order Date',required=True, select=True), - 'amount': fields.float('Total', readonly=True, select=True), - 'qty': fields.float('Quantity', readonly=True, select=True), - 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), - } - - def init(self, cr): - tools.drop_view_if_exists(cr, 'report_sales_by_user_pos') - cr.execute(""" - create or replace view report_sales_by_user_pos as ( - select - min(po.id) as id, - to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::text as date_order, - po.user_id as user_id, - sum(pol.qty)as qty, - sum((pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0))) as amount - from - pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt - where - pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id - group by - to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::text, - po.user_id - - ) - """) -report_sales_by_user_pos() - -class report_sales_by_user_pos_month(osv.osv): - _name = "report.sales.by.user.pos.month" - _description = "Sales by user monthly" - _auto = False - _columns = { - 'date_order': fields.date('Order Date',required=True, select=True), - 'amount': fields.float('Total', readonly=True, select=True), - 'qty': fields.float('Quantity', readonly=True, select=True), - 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), - } - - def init(self, cr): - tools.drop_view_if_exists(cr, 'report_sales_by_user_pos_month') - cr.execute(""" - create or replace view report_sales_by_user_pos_month as ( - select - min(po.id) as id, - to_char(date_trunc('month',po.date_order),'YYYY-MM-DD')::text as date_order, - po.user_id as user_id, - sum(pol.qty)as qty, - sum((pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0))) as amount - from - pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt - where - pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id - group by - to_char(date_trunc('month',po.date_order),'YYYY-MM-DD')::text, - po.user_id - - ) - """) -report_sales_by_user_pos_month() - -class report_sales_by_margin_pos(osv.osv): - _name = "report.sales.by.margin.pos" - _description = "Sales by margin" - _auto = False - _columns = { -# 'pos_name': fields.char('POS Order', size=64, readonly=True), - 'product_name':fields.char('Product Name', size=64, readonly=True), - 'date_order': fields.date('Order Date',required=True, select=True), - # 'amount': fields.float('Total', readonly=True, select=True), - 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), - 'qty': fields.float('Qty', readonly=True, select=True), - 'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True), - 'total':fields.float('Margin', readonly=True, select=True), - - } - - def init(self, cr): - tools.drop_view_if_exists(cr, 'report_sales_by_margin_pos') - cr.execute(""" - create or replace view report_sales_by_margin_pos as ( - select - min(pol.id) as id, - po.user_id as user_id, - pt.name as product_name, - to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::text as date_order, - sum(pol.qty) as qty, - pt.list_price-pt.standard_price as net_margin_per_qty, - (pt.list_price-pt.standard_price) *sum(pol.qty) as total - from - product_template as pt, - product_product as pp, - pos_order_line as pol, - pos_order as po - where - pol.product_id = pp.product_tmpl_id and - pp.product_tmpl_id = pt.id and - po.id = pol.order_id - - group by - pt.name, - pt.list_price, - pt.standard_price, - po.user_id, - to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::text - - ) - """) -report_sales_by_margin_pos() - -class report_sales_by_margin_pos_month(osv.osv): - _name = "report.sales.by.margin.pos.month" - _description = "Sales by margin monthly" - _auto = False - _columns = { - - 'product_name':fields.char('Product Name', size=64, readonly=True), - 'date_order': fields.date('Order Date',required=True, select=True), - 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), - 'qty': fields.float('Qty', readonly=True, select=True), - 'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True), - 'total':fields.float('Margin', readonly=True, select=True), - - } - - def init(self, cr): - tools.drop_view_if_exists(cr, 'report_sales_by_margin_pos_month') - cr.execute(""" - create or replace view report_sales_by_margin_pos_month as ( - select - min(pol.id) as id, - po.user_id as user_id, - pt.name as product_name, - to_char(date_trunc('month',po.date_order),'YYYY-MM-DD')::text as date_order, - sum(pol.qty) as qty, - pt.list_price-pt.standard_price as net_margin_per_qty, - (pt.list_price-pt.standard_price) *sum(pol.qty) as total - from - product_template as pt, - product_product as pp, - pos_order_line as pol, - pos_order as po - where - pol.product_id = pp.product_tmpl_id and - pp.product_tmpl_id = pt.id and - po.id = pol.order_id - - group by - pt.name, - pt.list_price, - pt.standard_price, - po.user_id, - to_char(date_trunc('month',po.date_order),'YYYY-MM-DD')::text - - ) - """) -report_sales_by_margin_pos_month() - - class account_move_line(osv.osv): _inherit = 'account.move.line' def create(self, cr, user, vals, context={}): @@ -1565,5 +1347,13 @@ class product_product(osv.osv): _defaults = { 'disc_controle': lambda *a: True, } +class stock_picking(osv.osv): + + _inherit = 'stock.picking' + _columns = { + 'pos_order': fields.many2one('pos.order', 'Pos order'), + } +stock_picking() + product_product() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/__init__.py b/addons/point_of_sale/report/__init__.py index a5798add7b4..4af503ff9da 100644 --- a/addons/point_of_sale/report/__init__.py +++ b/addons/point_of_sale/report/__init__.py @@ -36,5 +36,6 @@ import pos_payment_report_user import pos_sales_user_today_current_user import pos_receipt_with_remboursment import pos_receipt_without_remboursment +import point_of_sale_report # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/report/point_of_sale_report.py b/addons/point_of_sale/report/point_of_sale_report.py new file mode 100644 index 00000000000..10ba94662a2 --- /dev/null +++ b/addons/point_of_sale/report/point_of_sale_report.py @@ -0,0 +1,242 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from osv import osv, fields +import time +import netsvc +import tools + +class report_transaction_pos(osv.osv): + _name = "report.transaction.pos" + _description = "transaction for the pos" + _auto = False + _columns = { + 'date_create': fields.char('Date', size=16, readonly=True), + 'journal_id': fields.many2one('account.journal', 'Sales Journal', readonly=True), + 'jl_id': fields.many2one('account.journal', 'Cash Journals', readonly=True), + 'user_id': fields.many2one('res.users', 'User', readonly=True), + 'no_trans': fields.float('Number of Transaction', readonly=True), + 'amount': fields.float('Amount', readonly=True), + 'invoice_id': fields.float('Nbr Invoice', readonly=True), + 'invoice_am': fields.float('Invoice Amount', readonly=True), + 'product_nb': fields.float('Product Nb.', readonly=True), + 'disc': fields.float('Disc.', readonly=True), + } + + def init(self, cr): + tools.drop_view_if_exists(cr, 'report_transaction_pos') + cr.execute(""" + create or replace view report_transaction_pos as ( + select + min(absl.id) as id, + count(absl.id) as no_trans, + sum(absl.amount) as amount, + sum(line.price_ded) as disc, + to_char(date_trunc('day',absl.create_date),'YYYY-MM-DD')::text as date_create, + po.user_id as user_id, + po.sale_journal as journal_id, + abs.journal_id as jl_id, + count(po.invoice_id) as invoice_id, + count(p.id) as product_nb + from + account_bank_statement_line as absl, + account_bank_statement as abs, + product_product as p, + pos_order_line as line, + pos_order as po + where + absl.pos_statement_id = po.id and + line.order_id=po.id and + line.product_id=p.id and + absl.statement_id=abs.id + + group by + po.user_id,po.sale_journal, abs.journal_id, + to_char(date_trunc('day',absl.create_date),'YYYY-MM-DD')::text + ) + """) + #to_char(date_trunc('day',absl.create_date),'YYYY-MM-DD') + #to_char(date_trunc('day',absl.create_date),'YYYY-MM-DD')::text as date_create, +report_transaction_pos() + +class report_sales_by_user_pos(osv.osv): + _name = "report.sales.by.user.pos" + _description = "Sales by user" + _auto = False + _columns = { + 'date_order': fields.date('Order Date',required=True, select=True), + 'amount': fields.float('Total', readonly=True, select=True), + 'qty': fields.float('Quantity', readonly=True, select=True), + 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), + } + + def init(self, cr): + tools.drop_view_if_exists(cr, 'report_sales_by_user_pos') + cr.execute(""" + create or replace view report_sales_by_user_pos as ( + select + min(po.id) as id, + to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::text as date_order, + po.user_id as user_id, + sum(pol.qty)as qty, + sum((pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0))) as amount + from + pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt + where + pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id + group by + to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::text, + po.user_id + + ) + """) +report_sales_by_user_pos() + +class report_sales_by_user_pos_month(osv.osv): + _name = "report.sales.by.user.pos.month" + _description = "Sales by user monthly" + _auto = False + _columns = { + 'date_order': fields.date('Order Date',required=True, select=True), + 'amount': fields.float('Total', readonly=True, select=True), + 'qty': fields.float('Quantity', readonly=True, select=True), + 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), + } + + def init(self, cr): + tools.drop_view_if_exists(cr, 'report_sales_by_user_pos_month') + cr.execute(""" + create or replace view report_sales_by_user_pos_month as ( + select + min(po.id) as id, + to_char(date_trunc('month',po.date_order),'YYYY-MM-DD')::text as date_order, + po.user_id as user_id, + sum(pol.qty)as qty, + sum((pol.price_unit * pol.qty * (1 - (pol.discount) / 100.0))) as amount + from + pos_order as po,pos_order_line as pol,product_product as pp,product_template as pt + where + pt.id=pp.product_tmpl_id and pp.id=pol.product_id and po.id = pol.order_id + group by + to_char(date_trunc('month',po.date_order),'YYYY-MM-DD')::text, + po.user_id + + ) + """) +report_sales_by_user_pos_month() + +class report_sales_by_margin_pos(osv.osv): + _name = "report.sales.by.margin.pos" + _description = "Sales by margin" + _auto = False + _columns = { +# 'pos_name': fields.char('POS Order', size=64, readonly=True), + 'product_name':fields.char('Product Name', size=64, readonly=True), + 'date_order': fields.date('Order Date',required=True, select=True), + # 'amount': fields.float('Total', readonly=True, select=True), + 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), + 'qty': fields.float('Qty', readonly=True, select=True), + 'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True), + 'total':fields.float('Margin', readonly=True, select=True), + + } + + def init(self, cr): + tools.drop_view_if_exists(cr, 'report_sales_by_margin_pos') + cr.execute(""" + create or replace view report_sales_by_margin_pos as ( + select + min(pol.id) as id, + po.user_id as user_id, + pt.name as product_name, + to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::text as date_order, + sum(pol.qty) as qty, + pt.list_price-pt.standard_price as net_margin_per_qty, + (pt.list_price-pt.standard_price) *sum(pol.qty) as total + from + product_template as pt, + product_product as pp, + pos_order_line as pol, + pos_order as po + where + pol.product_id = pp.product_tmpl_id and + pp.product_tmpl_id = pt.id and + po.id = pol.order_id + + group by + pt.name, + pt.list_price, + pt.standard_price, + po.user_id, + to_char(date_trunc('day',po.date_order),'YYYY-MM-DD')::text + + ) + """) +report_sales_by_margin_pos() + +class report_sales_by_margin_pos_month(osv.osv): + _name = "report.sales.by.margin.pos.month" + _description = "Sales by margin monthly" + _auto = False + _columns = { + + 'product_name':fields.char('Product Name', size=64, readonly=True), + 'date_order': fields.date('Order Date',required=True, select=True), + 'user_id': fields.many2one('res.users', 'User', readonly=True, select=True), + 'qty': fields.float('Qty', readonly=True, select=True), + 'net_margin_per_qty':fields.float('Net margin per Qty', readonly=True, select=True), + 'total':fields.float('Margin', readonly=True, select=True), + + } + + def init(self, cr): + tools.drop_view_if_exists(cr, 'report_sales_by_margin_pos_month') + cr.execute(""" + create or replace view report_sales_by_margin_pos_month as ( + select + min(pol.id) as id, + po.user_id as user_id, + pt.name as product_name, + to_char(date_trunc('month',po.date_order),'YYYY-MM-DD')::text as date_order, + sum(pol.qty) as qty, + pt.list_price-pt.standard_price as net_margin_per_qty, + (pt.list_price-pt.standard_price) *sum(pol.qty) as total + from + product_template as pt, + product_product as pp, + pos_order_line as pol, + pos_order as po + where + pol.product_id = pp.product_tmpl_id and + pp.product_tmpl_id = pt.id and + po.id = pol.order_id + + group by + pt.name, + pt.list_price, + pt.standard_price, + po.user_id, + to_char(date_trunc('month',po.date_order),'YYYY-MM-DD')::text + + ) + """) +report_sales_by_margin_pos_month() + diff --git a/addons/point_of_sale/sale_wizard.xml b/addons/point_of_sale/sale_wizard.xml deleted file mode 100644 index ca741e2c808..00000000000 --- a/addons/point_of_sale/sale_wizard.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/addons/point_of_sale/stock.py b/addons/point_of_sale/stock.py deleted file mode 100644 index 95630569a7c..00000000000 --- a/addons/point_of_sale/stock.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved -# $Id$ -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -############################################################################## - -from osv import osv, fields -import time -import netsvc - - -class stock_picking(osv.osv): - - _inherit = 'stock.picking' - _columns = { - 'pos_order': fields.many2one('pos.order', 'Pos order'), - # 'company_id':fields.many2one('res.company', 'Company', required=True), - } -stock_picking() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: -