[REF] purchase_requisition: sequence handling

When creating a draft purchase agreement, a reference number was generated even if
we do not click the 'Save' button.
Now, the reference is filled with 'New' at the creation and overided with a proper
reference number after clicking on 'Save'. Also, the prefix depends now of the
requisition type. BOxxxxx for blanket orders, TExxxxx for call for tenders.
This commit is contained in:
William Henrotin
2018-02-01 15:11:14 +01:00
committed by Pierre Masereel
parent d8d925d366
commit 8d0be4059a
3 changed files with 22 additions and 5 deletions
@@ -17,11 +17,18 @@
<field name="quantity_copy">copy</field>
</record>
<record id="seq_purchase_requisition" model="ir.sequence">
<field name="name">Purchase Requisition Order</field>
<field name="code">purchase.order.requisition</field>
<record id="seq_purchase_tender" model="ir.sequence">
<field name="name">Purchase Tender</field>
<field name="code">purchase.requisition.purchase.tender</field>
<field name="prefix">TE</field>
<field name="padding">5</field>
</record>
<record id="seq_blanket_order" model="ir.sequence">
<field name="name">Blanket Order</field>
<field name="code">purchase.requisition.blanket.order</field>
<field name="prefix">BO</field>
<field name="padding">5</field>
</record>
</data>
</odoo>
@@ -45,7 +45,7 @@ class PurchaseRequisition(models.Model):
def _get_type_id(self):
return self.env['purchase.requisition.type'].search([], limit=1)
name = fields.Char(string='Agreement Reference', required=True, copy=False, default= lambda self: self.env['ir.sequence'].next_by_code('purchase.order.requisition'))
name = fields.Char(string='Agreement Reference', required=True, copy=False, default='New', readonly=True)
origin = fields.Char(string='Source Document')
order_count = fields.Integer(compute='_compute_orders_number', string='Number of Orders')
vendor_id = fields.Many2one('res.partner', string="Vendor")
@@ -68,6 +68,16 @@ class PurchaseRequisition(models.Model):
picking_type_id = fields.Many2one('stock.picking.type', 'Operation Type', required=True, default=_get_picking_in)
is_quantity_copy = fields.Selection(related='type_id.quantity_copy', readonly=True)
@api.model
def create(self, vals):
rec = super(PurchaseRequisition, self).create(vals)
if rec.name == 'New':
if rec.is_quantity_copy != 'none':
rec.name = self.env['ir.sequence'].next_by_code('purchase.requisition.purchase.tender')
else:
rec.name = self.env['ir.sequence'].next_by_code('purchase.requisition.blanket.order')
return rec
@api.onchange('vendor_id')
def _onchange_vendor(self):
requisitions = self.env['purchase.requisition'].search([
@@ -144,7 +144,7 @@
<div class="pull-left">
<label for="name" class="oe_edit_only oe_inline"/>
<h1>
<field name="name" attrs="{'readonly': [('state','not in',('draft'))]}"/>
<field name="name"/>
</h1>
</div>
<group>