How will I going to required the OR number for Customer and required Checque number for Supplier?
In XML:
<record id="account_voucher_receipt_dialog_form_view_inherit_sale" model="ir.ui.view">
<field name="name">account.voucher.payment.form</field>
<field name="model">account.voucher</field>
<field name="inherit_id" ref="account_voucher.view_vendor_receipt_dialog_form" />
<field name="priority" eval="30"/>
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='reference']" position="after">
<field name="pr_num" string="P.R. Number" placeholder="e.g. PR003/10"/>
<field name="or_num" domain="[('partner_id', '=', partner_id)]" invisible="context.get('hide_track',False)" attrs="{'required':('tracking','=',True)}" string="O.R. Number" placeholder="e.g. OR003/10"/>
<field name="cv_num" string="C.V.Number" placeholder="e.g. CV003/10"/>
<field name="cheque_num" domain="[('partner_id', '=', partner_id)]" invisible="context.get('hide_track',False)" attrs="{'required':('tracking','=',True)}" string="Checque Number" placeholder="e.g. Checque003/10"/>
<field name="tracking" invisible="1"/>
</xpath>
</data>
</field>
</record>
In PY:
class account_voucher(osv.osv):
_inherit = 'account.voucher'
def _tracking(self, cursor, user, ids, name, arg, context=None):
res = {}
for tracklot in self.browse(cursor, user, ids, context=context):
tracking = False
if (tracklot.move_id.picking_id.type == 'in' and tracklot.product_id.track_incoming == True) or \
(tracklot.move_id.picking_id.type == 'out' and tracklot.product_id.track_outgoing == True):
tracking = True
res[tracklot.id] = tracking
return res
def _hide_tracking(self, cursor, user, ids, name, arg, context=None):
res = {}
for wizard in self.browse(cursor, user, ids, context=context):
res[wizard.id] = any([not(x.tracking) for x in wizard.move_ids])
return res
_columns ={
'or_num': fields.char('O.R. Number', size=50),
'cheque_num': fields.char('Cheque Number', size=50),
'pr_num': fields.char('P.R. Number', size=50),
'cv_num': fields.char('C.V. Number', size=50),
'name':fields.char('Memo', size=256, readonly=True, states={'draft':[('readonly',False)]}),
'type':fields.selection([('sale','Sale'),('purchase','Purchase'),('payment','Payment'),('receipt','Receipt'),],'Default Type'),
'tracking': fields.function(_tracking, string='Tracking', type='boolean'),
'hide_track':fields.function(_hide_tracking, string='Tracking', type='boolean'),
}
account_voucher()