Browse Source

[UPDATE]Count Issue Fix

pull/81/head
SHEREEF PT 8 years ago
parent
commit
30bac361b1
  1. 4
      export_stockinfo_xls/README.rst
  2. 12
      export_stockinfo_xls/doc/changelog.rst
  3. 4
      export_stockinfo_xls/report/current_stock_xls.py
  4. 162
      export_stockinfo_xls/report/current_stock_xls.py~

4
export_stockinfo_xls/README.rst

@ -1,6 +1,6 @@
===================== ================================
Export Product Stock in Excel v9 Export Product Stock in Excel v9
====================== ================================
This module helps you to take current stock report for all products in each warehouse. This module helps you to take current stock report for all products in each warehouse.
Installation Installation

12
export_stockinfo_xls/doc/changelog.rst

@ -0,0 +1,12 @@
Changelog
=========
`10.0.2.0.0`
------------
- Total sold & Total purchased counts corrected.
- Added name for sheet.
`9.0.2.0.0`
-----------
- Total sold & Total purchased counts corrected.
- Added name for sheet.

4
export_stockinfo_xls/report/current_stock_xls.py

@ -35,12 +35,12 @@ class StockReportXls(ReportXlsx):
sale_value = 0 sale_value = 0
purchase_value = 0 purchase_value = 0
product = self.env['product.product'].browse(obj.id) product = self.env['product.product'].browse(obj.id)
sale_obj = self.env['sale.order.line'].search([('order_id.state', '=', 'done'), sale_obj = self.env['sale.order.line'].search([('order_id.state', 'in', ('sale', 'done')),
('product_id', '=', product.id), ('product_id', '=', product.id),
('order_id.warehouse_id', '=', warehouse)]) ('order_id.warehouse_id', '=', warehouse)])
for i in sale_obj: for i in sale_obj:
sale_value = sale_value + i.product_uom_qty sale_value = sale_value + i.product_uom_qty
purchase_obj = self.env['purchase.order.line'].search([('order_id.state', '=', 'done'), purchase_obj = self.env['purchase.order.line'].search([('order_id.state', 'in', ('purchase', 'done')),
('product_id', '=', product.id), ('product_id', '=', product.id),
('order_id.picking_type_id', '=', warehouse)]) ('order_id.picking_type_id', '=', warehouse)])
for i in purchase_obj: for i in purchase_obj:

162
export_stockinfo_xls/report/current_stock_xls.py~

@ -1,162 +0,0 @@
# -*- coding: utf-8 -*-
from openerp.addons.report_xlsx.report.report_xlsx import ReportXlsx
import datetime
class StockReportXls(ReportXlsx):
def get_warehouse(self, data):
if data.get('form', False) and data['form'].get('warehouse', False):
l1 = []
l2 = []
obj = self.env['stock.warehouse'].search([('id', 'in', data['form']['warehouse'])])
for j in obj:
l1.append(j.name)
l2.append(j.id)
return l1, l2
def get_category(self, data):
if data.get('form', False) and data['form'].get('category', False):
l2 = []
obj = self.env['product.category'].search([('id', 'in', data['form']['category'])])
for j in obj:
l2.append(j.id)
return l2
return ''
def get_lines(self, data, warehouse):
lines = []
categ = self.get_category(data)
if categ:
stock_history = self.env['product.product'].search([('categ_id', 'in', categ)])
else:
stock_history = self.env['product.product'].search([])
for obj in stock_history:
sale_value = 0
purchase_value = 0
product = self.env['product.product'].browse(obj.id)
sale_obj = self.env['sale.order.line'].search([('order_id.state', '=', 'done'),
('product_id', '=', product.id),
('order_id.warehouse_id', '=', warehouse)])
for i in sale_obj:
sale_value = sale_value + i.product_uom_qty
purchase_obj = self.env['purchase.order.line'].search([('order_id.state', '=', 'done'),
('product_id', '=', product.id),
('order_id.picking_type_id', '=', warehouse)])
for i in purchase_obj:
purchase_value = purchase_value + i.product_qty
available_qty = product.with_context({'warehouse': warehouse}).virtual_available + \
product.with_context({'warehouse': warehouse}).outgoing_qty - \
product.with_context({'warehouse': warehouse}).incoming_qty
value = available_qty * product.standard_price
vals = {
'sku': product.default_code,
'name': product.name,
'category': product.categ_id.name,
'cost_price': product.standard_price,
'available': available_qty,
'virtual': product.with_context({'warehouse': warehouse}).virtual_available,
'incoming': product.with_context({'warehouse': warehouse}).incoming_qty,
'outgoing': product.with_context({'warehouse': warehouse}).outgoing_qty,
'net_on_hand': product.with_context({'warehouse': warehouse}).qty_available,
'total_value': value,
'sale_value': sale_value,
'purchase_value': purchase_value,
}
lines.append(vals)
return lines
def generate_xlsx_report(self, workbook, data, lines):
get_warehouse = self.get_warehouse(data)
count = len(get_warehouse[0]) * 11 + 6
sheet = workbook.add_worksheet()
format1 = workbook.add_format({'font_size': 14, 'bottom': True, 'right': True, 'left': True, 'top': True, 'align': 'vcenter', 'bold': True})
format11 = workbook.add_format({'font_size': 12, 'align': 'center', 'right': True, 'left': True, 'bottom': True, 'top': True, 'bold': True})
format21 = workbook.add_format({'font_size': 10, 'align': 'center', 'right': True, 'left': True,'bottom': True, 'top': True, 'bold': True})
format3 = workbook.add_format({'bottom': True, 'top': True, 'font_size': 12})
font_size_8 = workbook.add_format({'bottom': True, 'top': True, 'right': True, 'left': True, 'font_size': 8})
red_mark = workbook.add_format({'bottom': True, 'top': True, 'right': True, 'left': True, 'font_size': 8,
'bg_color': 'red'})
justify = workbook.add_format({'bottom': True, 'top': True, 'right': True, 'left': True, 'font_size': 12})
format3.set_align('center')
font_size_8.set_align('center')
justify.set_align('justify')
format1.set_align('center')
red_mark.set_align('center')
sheet.merge_range('A3:G3', 'Report Date: ' + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M %p")), format1)
sheet.merge_range(2, 7, 2, count, 'Warehouses', format1)
sheet.merge_range('A4:G4', 'Product Information', format11)
w_col_no = 6
w_col_no1 = 7
for i in get_warehouse[0]:
w_col_no = w_col_no + 11
sheet.merge_range(3, w_col_no1, 3, w_col_no, i, format11)
w_col_no1 = w_col_no1 + 11
sheet.write(4, 0, 'SKU', format21)
sheet.merge_range(4, 1, 4, 3, 'Name', format21)
sheet.merge_range(4, 4, 4, 5, 'Category', format21)
sheet.write(4, 6, 'Cost Price', format21)
p_col_no1 = 7
for i in get_warehouse[0]:
sheet.write(4, p_col_no1, 'Available', format21)
sheet.write(4, p_col_no1 + 1, 'Virtual', format21)
sheet.write(4, p_col_no1 + 2, 'Incoming', format21)
sheet.write(4, p_col_no1 + 3, 'Outgoing', format21)
sheet.merge_range(4, p_col_no1 + 4, 4, p_col_no1 + 5, 'Net On Hand', format21)
sheet.merge_range(4, p_col_no1 + 6, 4, p_col_no1 + 7, 'Total Sold', format21)
sheet.merge_range(4, p_col_no1 + 8, 4, p_col_no1 + 9, 'Total Purchased', format21)
sheet.write(4, p_col_no1 + 10, 'Valuation', format21)
p_col_no1 = p_col_no1 + 11
prod_row = 5
prod_col = 0
for i in get_warehouse[1]:
get_line = self.get_lines(data, i)
for each in get_line:
sheet.write(prod_row, prod_col, each['sku'], font_size_8)
sheet.merge_range(prod_row, prod_col + 1, prod_row, prod_col + 3, each['name'], font_size_8)
sheet.merge_range(prod_row, prod_col + 4, prod_row, prod_col + 5, each['category'], font_size_8)
sheet.write(prod_row, prod_col + 6, each['cost_price'], font_size_8)
prod_row = prod_row + 1
break
prod_row = 5
prod_col = 7
for i in get_warehouse[1]:
get_line = self.get_lines(data, i)
for each in get_line:
if each['available'] < 0:
sheet.write(prod_row, prod_col, each['available'], red_mark)
else:
sheet.write(prod_row, prod_col, each['available'], font_size_8)
if each['virtual'] < 0:
sheet.write(prod_row, prod_col + 1, each['virtual'], red_mark)
else:
sheet.write(prod_row, prod_col + 1, each['virtual'], font_size_8)
if each['incoming'] < 0:
sheet.write(prod_row, prod_col + 2, each['incoming'], red_mark)
else:
sheet.write(prod_row, prod_col + 2, each['incoming'], font_size_8)
if each['outgoing'] < 0:
sheet.write(prod_row, prod_col + 3, each['outgoing'], red_mark)
else:
sheet.write(prod_row, prod_col + 3, each['outgoing'], font_size_8)
if each['net_on_hand'] < 0:
sheet.merge_range(prod_row, prod_col + 4, prod_row, prod_col + 5, each['net_on_hand'], red_mark)
else:
sheet.merge_range(prod_row, prod_col + 4, prod_row, prod_col + 5, each['net_on_hand'], font_size_8)
if each['sale_value'] < 0:
sheet.merge_range(prod_row, prod_col + 6, prod_row, prod_col + 7, each['sale_value'], red_mark)
else:
sheet.merge_range(prod_row, prod_col + 6, prod_row, prod_col + 7, each['sale_value'], font_size_8)
if each['purchase_value'] < 0:
sheet.merge_range(prod_row, prod_col + 8, prod_row, prod_col + 9, each['purchase_value'], red_mark)
else:
sheet.merge_range(prod_row, prod_col + 8, prod_row, prod_col + 9, each['purchase_value'], font_size_8)
if each['total_value'] < 0:
sheet.write(prod_row, prod_col + 10, each['total_value'], red_mark)
else:
sheet.write(prod_row, prod_col + 10, each['total_value'], font_size_8)
prod_row = prod_row + 1
prod_row = 5
prod_col = prod_col + 11
StockReportXls('report.export_stockinfo_xls.stock_report_xls.xlsx', 'product.product')
Loading…
Cancel
Save