Merge lp:~unifield-team/unifield-addons/hooks-action-ship-create into lp:unifield-addons

Proposed by Patrick Amstutz
Status: Merged
Merged at revision: 4493
Proposed branch: lp:~unifield-team/unifield-addons/hooks-action-ship-create
Merge into: lp:unifield-addons
Diff against target: 219 lines (+125/-56)
1 file modified
sale/sale.py (+125/-56)
To merge this branch: bzr merge lp:~unifield-team/unifield-addons/hooks-action-ship-create
Reviewer Review Type Date Requested Status
UniField Dev Team Pending
Review via email: mp+76231@code.launchpad.net
To post a comment you must log in.
4493. By Quentin THEURET @Amaris

Add hook of return packing wizard

4494. By Quentin THEURET @Amaris

Add hook of return packing wizard

4495. By Quentin THEURET @Amaris

Add hook on procurement order

4496. By Quentin THEURET @Amaris

UF-370 [IMP] Added a hook on purchase_order.action_picking_create

4497. By Quentin THEURET @Amaris

[REV] Reverted to the revision 4492

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'sale/sale.py'
--- sale/sale.py 2011-07-07 10:50:50 +0000
+++ sale/sale.py 2011-09-21 14:46:31 +0000
@@ -649,14 +649,76 @@
649 if notcanceled:649 if notcanceled:
650 return False650 return False
651 return canceled651 return canceled
652652
653 def action_ship_create(self, cr, uid, ids, *args):653 def _hook_ship_create_stock_move(self, cr, uid, ids, context=None, *args, **kwargs):
654 '''
655 Please copy this to your module's method also.
656 This hook belongs to the action_ship_create method from sale>sale.py
657
658 - allow to modify the data for stock move creation
659 '''
660 move_data = kwargs['move_data']
661 return move_data
662
663 def _hook_ship_create_procurement_order(self, cr, uid, ids, context=None, *args, **kwargs):
664 '''
665 Please copy this to your module's method also.
666 This hook belongs to the action_ship_create method from sale>sale.py
667
668 - allow to modify the data for procurement order creation
669 '''
670 proc_data = kwargs['proc_data']
671 return proc_data
672
673 def _hook_ship_create_stock_picking(self, cr, uid, ids, context=None, *args, **kwargs):
674 '''
675 Please copy this to your module's method also.
676 This hook belongs to the action_ship_create method from sale>sale.py
677
678 - allow to modify the data for stock picking creation
679 '''
680 picking_data = kwargs['picking_data']
681 return picking_data
682
683 def _hook_ship_create_execute_picking_workflow(self, cr, uid, ids, context=None, *args, **kwargs):
684 '''
685 Please copy this to your module's method also.
686 This hook belongs to the action_ship_create method from sale>sale.py
687
688 - allow to avoid the stock picking workflow execution
689 '''
690 picking_id = kwargs['picking_id']
691 return picking_id
692
693 def _hook_ship_create_execute_specific_code_01(self, cr, uid, ids, context=None, *args, **kwargs):
694 '''
695 Please copy this to your module's method also.
696 This hook belongs to the action_ship_create method from sale>sale.py
697
698 - allow to execute specific code at position 01
699 '''
700 pass
701
702 def _hook_ship_create_line_condition(self, cr, uid, ids, context=None, *args, **kwargs):
703 '''
704 Please copy this to your module's method also.
705 This hook belongs to the action_ship_create method from sale>sale.py
706
707 - allow to customize the execution condition
708 '''
709 line = kwargs['line']
710 result = line.product_id and line.product_id.product_tmpl_id.type in ('product', 'consu')
711 return result
712
713 def action_ship_create(self, cr, uid, ids, context=None, *args):
714 if context is None:
715 context = {}
654 wf_service = netsvc.LocalService("workflow")716 wf_service = netsvc.LocalService("workflow")
655 picking_id = False717 picking_id = False
656 move_obj = self.pool.get('stock.move')718 move_obj = self.pool.get('stock.move')
657 proc_obj = self.pool.get('procurement.order')719 proc_obj = self.pool.get('procurement.order')
658 company = self.pool.get('res.users').browse(cr, uid, uid).company_id720 company = self.pool.get('res.users').browse(cr, uid, uid).company_id
659 for order in self.browse(cr, uid, ids, context={}):721 for order in self.browse(cr, uid, ids, context=context):
660 proc_ids = []722 proc_ids = []
661 output_id = order.shop_id.warehouse_id.lot_output_id.id723 output_id = order.shop_id.warehouse_id.lot_output_id.id
662 picking_id = False724 picking_id = False
@@ -668,63 +730,69 @@
668 if line.state == 'done':730 if line.state == 'done':
669 continue731 continue
670 move_id = False732 move_id = False
671 if line.product_id and line.product_id.product_tmpl_id.type in ('product', 'consu'):733 if self._hook_ship_create_line_condition(cr, uid, ids, context=context, line=line,):
672 location_id = order.shop_id.warehouse_id.lot_stock_id.id734 location_id = order.shop_id.warehouse_id.lot_stock_id.id
673 if not picking_id:735 if not picking_id:
674 pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')736 pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.out')
675 picking_id = self.pool.get('stock.picking').create(cr, uid, {737 picking_data = {'name': pick_name,
676 'name': pick_name,738 'origin': order.name,
677 'origin': order.name,739 'type': 'out',
678 'type': 'out',740 'state': 'auto',
679 'state': 'auto',741 'move_type': order.picking_policy,
680 'move_type': order.picking_policy,742 'sale_id': order.id,
681 'sale_id': order.id,743 'address_id': order.partner_shipping_id.id,
682 'address_id': order.partner_shipping_id.id,744 'note': order.note,
683 'note': order.note,745 'invoice_state': (order.order_policy=='picking' and '2binvoiced') or 'none',
684 'invoice_state': (order.order_policy=='picking' and '2binvoiced') or 'none',746 'company_id': order.company_id.id,
685 'company_id': order.company_id.id,747 }
686 })748 picking_data = self._hook_ship_create_stock_picking(cr, uid, ids, context=context, picking_data=picking_data, order=order,)
687 move_id = self.pool.get('stock.move').create(cr, uid, {749 picking_id = self.pool.get('stock.picking').create(cr, uid, picking_data, context=context)
688 'name': line.name[:64],750
689 'picking_id': picking_id,751 move_data = {'name': line.name[:64],
690 'product_id': line.product_id.id,752 'picking_id': picking_id,
691 'date': date_planned,753 'product_id': line.product_id.id,
692 'date_expected': date_planned,754 'date': date_planned,
693 'product_qty': line.product_uom_qty,755 'date_expected': date_planned,
694 'product_uom': line.product_uom.id,756 'product_qty': line.product_uom_qty,
695 'product_uos_qty': line.product_uos_qty,757 'product_uom': line.product_uom.id,
696 'product_uos': (line.product_uos and line.product_uos.id)\758 'product_uos_qty': line.product_uos_qty,
697 or line.product_uom.id,759 'product_uos': (line.product_uos and line.product_uos.id)\
698 'product_packaging': line.product_packaging.id,760 or line.product_uom.id,
699 'address_id': line.address_allotment_id.id or order.partner_shipping_id.id,761 'product_packaging': line.product_packaging.id,
700 'location_id': location_id,762 'address_id': line.address_allotment_id.id or order.partner_shipping_id.id,
701 'location_dest_id': output_id,763 'location_id': location_id,
702 'sale_line_id': line.id,764 'location_dest_id': output_id,
703 'tracking_id': False,765 'sale_line_id': line.id,
704 'state': 'draft',766 'tracking_id': False,
705 #'state': 'waiting',767 'state': 'draft',
706 'note': line.notes,768 #'state': 'waiting',
707 'company_id': order.company_id.id,769 'note': line.notes,
708 })770 'company_id': order.company_id.id,
771 }
772
773 # hook for stock move data modification
774 move_data = self._hook_ship_create_stock_move(cr, uid, ids, context=context, move_data=move_data, line=line, order=order,)
775 move_id = self.pool.get('stock.move').create(cr, uid, move_data, context=context)
709776
710 if line.product_id:777 if line.product_id:
711 proc_id = self.pool.get('procurement.order').create(cr, uid, {778 proc_data = {'name': line.name,
712 'name': line.name,779 'origin': order.name,
713 'origin': order.name,780 'date_planned': date_planned,
714 'date_planned': date_planned,781 'product_id': line.product_id.id,
715 'product_id': line.product_id.id,782 'product_qty': line.product_uom_qty,
716 'product_qty': line.product_uom_qty,783 'product_uom': line.product_uom.id,
717 'product_uom': line.product_uom.id,784 'product_uos_qty': (line.product_uos and line.product_uos_qty)\
718 'product_uos_qty': (line.product_uos and line.product_uos_qty)\785 or line.product_uom_qty,
719 or line.product_uom_qty,786 'product_uos': (line.product_uos and line.product_uos.id)\
720 'product_uos': (line.product_uos and line.product_uos.id)\787 or line.product_uom.id,
721 or line.product_uom.id,788 'location_id': order.shop_id.warehouse_id.lot_stock_id.id,
722 'location_id': order.shop_id.warehouse_id.lot_stock_id.id,789 'procure_method': line.type,
723 'procure_method': line.type,790 'move_id': move_id,
724 'move_id': move_id,791 'property_ids': [(6, 0, [x.id for x in line.property_ids])],
725 'property_ids': [(6, 0, [x.id for x in line.property_ids])],792 'company_id': order.company_id.id,
726 'company_id': order.company_id.id,793 }
727 })794 proc_data = self._hook_ship_create_procurement_order(cr, uid, ids, context=context, proc_data=proc_data, line=line,)
795 proc_id = self.pool.get('procurement.order').create(cr, uid, proc_data)
728 proc_ids.append(proc_id)796 proc_ids.append(proc_id)
729 self.pool.get('sale.order.line').write(cr, uid, [line.id], {'procurement_id': proc_id})797 self.pool.get('sale.order.line').write(cr, uid, [line.id], {'procurement_id': proc_id})
730 if order.state == 'shipping_except':798 if order.state == 'shipping_except':
@@ -739,11 +807,12 @@
739807
740 val = {}808 val = {}
741809
742 if picking_id:810 if self._hook_ship_create_execute_picking_workflow(cr, uid, ids, context=context, picking_id=picking_id,):
743 wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)811 wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
744812
745 for proc_id in proc_ids:813 for proc_id in proc_ids:
746 wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)814 wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
815 self._hook_ship_create_execute_specific_code_01(cr, uid, ids, context=context, order=order, proc_id=proc_id,)
747816
748 if order.state == 'shipping_except':817 if order.state == 'shipping_except':
749 val['state'] = 'progress'818 val['state'] = 'progress'

Subscribers

People subscribed via source and target branches

to all changes: