diff --git a/odex25_purchase/purchase_custom_stock/__pycache__/__init__.cpython-38.pyc b/odex25_purchase/purchase_custom_stock/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 000000000..1746b344d
Binary files /dev/null and b/odex25_purchase/purchase_custom_stock/__pycache__/__init__.cpython-38.pyc differ
diff --git a/odex25_purchase/purchase_custom_stock/models/__pycache__/__init__.cpython-38.pyc b/odex25_purchase/purchase_custom_stock/models/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 000000000..d38e71076
Binary files /dev/null and b/odex25_purchase/purchase_custom_stock/models/__pycache__/__init__.cpython-38.pyc differ
diff --git a/odex25_purchase/purchase_custom_stock/models/__pycache__/purchase_request.cpython-38.pyc b/odex25_purchase/purchase_custom_stock/models/__pycache__/purchase_request.cpython-38.pyc
new file mode 100644
index 000000000..56e8e6853
Binary files /dev/null and b/odex25_purchase/purchase_custom_stock/models/__pycache__/purchase_request.cpython-38.pyc differ
diff --git a/odex25_purchase/purchase_custom_stock/models/purchase_request.py b/odex25_purchase/purchase_custom_stock/models/purchase_request.py
index b61132adc..6cecb8aba 100644
--- a/odex25_purchase/purchase_custom_stock/models/purchase_request.py
+++ b/odex25_purchase/purchase_custom_stock/models/purchase_request.py
@@ -122,53 +122,67 @@ class PurchaseRequest(models.Model):
raise ValidationError(_("Can't Confirm Request With No Item!"))
if not self.department_id:
raise ValidationError(_("Please Select department for employee"))
+ picking_id= self.env.ref('purchase_custom_stock.stock_picking_type_stock')
+
available=False
- if any(self.line_ids.filtered(lambda line: line.available_qty >0 )):
- available=True
+ if any(self.line_ids.filtered(lambda line: line.product_id.type == 'product' )):
+ storable_product_lines=self.line_ids.filtered(lambda line: line.product_id.type == 'product' )
+ non_storable_product = self.line_ids - storable_product_lines
+ if any(storable_product_lines.filtered(lambda line: line.available_qty > 0)):
+ available = True
+ if any(storable_product_lines.filtered(lambda store_line: store_line.qty > store_line.available_qty)):
+ context = {}
+ view = self.env.ref('purchase_custom_stock.purchase_request_picking_wizard_view_form')
+ wiz = self.env['purchase.request_picking.wizard']
+ context['default_request_id'] = self.id
+ context['default_is_available'] = available
+ storable_product = self.line_ids.filtered(lambda line: line.product_id.type == 'product')
+ context['default_request_line_ids'] = [
+ (6, 0, self.line_ids.ids)]
+ return {
+ 'name': _('Picking Options'),
+ 'type': 'ir.actions.act_window',
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'res_model': 'purchase.request_picking.wizard',
+ 'views': [(view.id, 'form')],
+ 'view_id': view.id,
+ 'target': 'new',
+ 'context': context,
+ }
+ else:
+ picking_vals = {
+ "picking_type_id": self.env.ref('purchase_custom_stock.stock_picking_type_stock').id,
+ "origin": self.name,
+ "location_id": self.location_id.id,
+ "location_dest_id": picking_id.default_location_dest_id.id
+ }
+ move_vals = []
+ for line in storable_product_lines:
+ move_vals.append((0, 0, {
+ "product_id": line.product_id.id,
+ "name": line.product_id.name,
+ "product_uom": line.product_id.uom_id.id,
+ 'product_uom_qty': line.qty,
- if any(self.line_ids.filtered(lambda line: line.qty > line.available_qty and line.product_id.type == 'product' )):
- context={}
- view = self.env.ref('purchase_custom_stock.purchase_request_picking_wizard_view_form')
- wiz = self.env['purchase.request_picking.wizard']
- context['default_request_id'] = self.id
- context['default_is_available'] = available
- context['default_request_line_ids'] = [(6,0,self.line_ids.filtered(lambda line: line.product_id.type == 'product').ids)]
-
- return {
- 'name': _('Picking Options'),
- 'type': 'ir.actions.act_window',
- 'view_type': 'form',
- 'view_mode': 'form',
- 'res_model': 'purchase.request_picking.wizard',
- 'views': [(view.id, 'form')],
- 'view_id': view.id,
- 'target': 'new',
- 'context': context,
- }
+ }))
+ line.qty_purchased = 0
+ picking_vals.update({'move_lines': move_vals})
+ picking_id = self.env['stock.picking'].create(picking_vals)
+ self.picking_id = picking_id.id
+ if non_storable_product:
+ for rec in non_storable_product:
+ rec.qty_purchased = rec.qty
+ self.write({'state': 'waiting'})
+ else:
+ self.write({'state': 'employee'})
else:
- picking_vals = {
- "picking_type_id": self.env.ref('purchase_custom_stock.stock_picking_type_stock').id,
- "origin": self.name,
- "location_id": self.location_id.id,
- "location_dest_id":self.picking_type_id.default_location_dest_id.id
- }
+ for line in self.line_ids:
+ line.qty_purchased = line.qty
+ self.write({'state': 'waiting'})
- move_vals=[]
- for line in self.line_ids.filtered(lambda line: line.qty <= line.available_qty and line.product_id.type != 'service'):
- move_vals.append((0,0,{
- "product_id":line.product_id.id,
- "name":line.product_id.name,
- "product_uom":line.product_id.uom_id.id,
- 'product_uom_qty': line.available_qty,
- }))
- picking_vals.update({'move_lines':move_vals})
- picking_id = self.env['stock.picking'].create(picking_vals)
- self.picking_id = picking_id.id
- self.write({'state': 'employee'})
-
- # self.picking_id.write({"move_lines":move_vals})
def open_picking(self):
diff --git a/odex25_purchase/purchase_custom_stock/wizards/__pycache__/__init__.cpython-38.pyc b/odex25_purchase/purchase_custom_stock/wizards/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 000000000..738e6f44e
Binary files /dev/null and b/odex25_purchase/purchase_custom_stock/wizards/__pycache__/__init__.cpython-38.pyc differ
diff --git a/odex25_purchase/purchase_custom_stock/wizards/__pycache__/picking_purchase_request.cpython-38.pyc b/odex25_purchase/purchase_custom_stock/wizards/__pycache__/picking_purchase_request.cpython-38.pyc
new file mode 100644
index 000000000..85f30cee2
Binary files /dev/null and b/odex25_purchase/purchase_custom_stock/wizards/__pycache__/picking_purchase_request.cpython-38.pyc differ
diff --git a/odex25_purchase/purchase_custom_stock/wizards/picking_purchase_request.py b/odex25_purchase/purchase_custom_stock/wizards/picking_purchase_request.py
index 433cebb99..ab57f3a8b 100644
--- a/odex25_purchase/purchase_custom_stock/wizards/picking_purchase_request.py
+++ b/odex25_purchase/purchase_custom_stock/wizards/picking_purchase_request.py
@@ -47,7 +47,7 @@ class PurcahseRefues(models.TransientModel):
}
move_vals = []
- for line in self.request_line_ids:
+ for line in self.request_line_ids.filtered(lambda line: line.product_id.type == 'product'):
if line.qty < line.available_qty:
move_vals.append((0, 0, {
"product_id": line.product_id.id,
@@ -68,6 +68,8 @@ class PurcahseRefues(models.TransientModel):
picking_vals.update({'move_lines': move_vals})
picking_id = self.env['stock.picking'].create(picking_vals)
self.request_id.picking_id = picking_id.id
+ for line in self.request_line_ids.filtered(lambda line: line.product_id.type != 'product'):
+ line.qty_purchased=line.qty
self.request_id.write({'state': 'waiting'})
def convert_purchase(self):
for line in self.request_line_ids:
diff --git a/odex25_purchase/purchase_custom_stock/wizards/picking_purchase_request.xml b/odex25_purchase/purchase_custom_stock/wizards/picking_purchase_request.xml
index 4ea4948c2..0b950121e 100644
--- a/odex25_purchase/purchase_custom_stock/wizards/picking_purchase_request.xml
+++ b/odex25_purchase/purchase_custom_stock/wizards/picking_purchase_request.xml
@@ -9,7 +9,7 @@