Browse Source

[UPDT] Updated to query 'export_stockinfo_xls'

pull/150/head
Ajmal JK 5 years ago
parent
commit
853f2856e1
  1. 2
      export_stockinfo_xls/__manifest__.py
  2. 103
      export_stockinfo_xls/report/current_stock_xls.py

2
export_stockinfo_xls/__manifest__.py

@ -22,7 +22,7 @@
{
'name': 'Export Product Stock in Excel',
'version': '12.0.1.0.0',
'version': '12.0.1.0.1',
'summary': "Current Stock Report for all Products in each Warehouse",
'category': 'Warehouse',
'author': 'Cybrosys Techno Solutions',

103
export_stockinfo_xls/report/current_stock_xls.py

@ -20,48 +20,6 @@ class StockReportXls(models.AbstractModel):
l2.append(j.id)
return l1, l2
def get_lines(self, data, warehouse):
lines = []
categ_id = data.mapped('id')
if categ_id:
stock_history = self.env['product.product'].search([('categ_id', 'in', categ_id)])
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', 'in', ('sale', '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', 'in', ('purchase', '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):
d = lines.category
get_warehouse = self.get_warehouse(lines)
@ -176,3 +134,64 @@ class StockReportXls(models.AbstractModel):
prod_row = prod_row + 1
prod_row = 10
prod_col = prod_col + 11
# continue
def get_lines(self, data, warehouse):
lines = []
categ_id = data.mapped('id')
if categ_id:
categ_products = self.env['product.product'].search([('categ_id', 'in', categ_id)])
else:
categ_products = self.env['product.product'].search([])
product_ids = tuple([pro_id.id for pro_id in categ_products])
sale_query = """
SELECT sum(s_o_l.product_uom_qty) AS product_uom_qty, s_o_l.product_id FROM sale_order_line AS s_o_l
JOIN sale_order AS s_o ON s_o_l.order_id = s_o.id
WHERE s_o.state IN ('sale','done')
AND s_o.warehouse_id = %s
AND s_o_l.product_id in %s group by s_o_l.product_id"""
purchase_query = """
SELECT sum(p_o_l.product_qty) AS product_qty, p_o_l.product_id FROM purchase_order_line AS p_o_l
JOIN purchase_order AS p_o ON p_o_l.order_id = p_o.id
INNER JOIN stock_picking_type AS s_p_t ON p_o.picking_type_id = s_p_t.id
WHERE p_o.state IN ('purchase','done')
AND s_p_t.warehouse_id = %s AND p_o_l.product_id in %s group by p_o_l.product_id"""
params = warehouse, product_ids if product_ids else (0, 0)
self._cr.execute(sale_query, params)
sol_query_obj = self._cr.dictfetchall()
self._cr.execute(purchase_query, params)
pol_query_obj = self._cr.dictfetchall()
for obj in categ_products:
sale_value = 0
purchase_value = 0
for sol_product in sol_query_obj:
if sol_product['product_id'] == obj.id:
sale_value = sol_product['product_uom_qty']
for pol_product in pol_query_obj:
if pol_product['product_id'] == obj.id:
purchase_value = pol_product['product_qty']
virtual_available = obj.with_context({'warehouse': warehouse}).virtual_available
outgoing_qty = obj.with_context({'warehouse': warehouse}).outgoing_qty
incoming_qty = obj.with_context({'warehouse': warehouse}).incoming_qty
available_qty = virtual_available + outgoing_qty - incoming_qty
value = available_qty * obj.standard_price
vals = {
'sku': obj.default_code,
'name': obj.name,
'category': obj.categ_id.name,
'cost_price': obj.standard_price,
'available': available_qty,
'virtual': virtual_available,
'incoming': incoming_qty,
'outgoing': outgoing_qty,
'net_on_hand': obj.with_context({'warehouse': warehouse}).qty_available,
'total_value': value,
'sale_value': sale_value,
'purchase_value': purchase_value,
}
lines.append(vals)
return lines

Loading…
Cancel
Save