Electrical Devices Service
This commit is contained in:
parent
60007c0cfa
commit
e3d56cc785
|
|
@ -9,5 +9,12 @@
|
|||
<field name="state">code</field>
|
||||
<field name="code">action = records.action_open_exchange_order_wizard()</field>
|
||||
</record>
|
||||
<record id="server_action_vendor_bill" model="ir.actions.server">
|
||||
<field name="name">Create Vendor Bill</field>
|
||||
<field name="model_id" ref="odex_benefit.model_service_request"/>
|
||||
<field name="binding_model_id" ref="odex_benefit.model_service_request"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = records.create_vendor_bill()</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -68,6 +68,7 @@ class ServiceRequest(models.Model):
|
|||
added_amount_if_mother_dead = fields.Float(string="Added Amount (If mother dead)",compute="_get_added_amount_if_mother_dead")
|
||||
attachment_lines = fields.One2many('service.attachments.settings','service_request_id',related='service_cat.attachment_lines',readonly=False)
|
||||
account_id = fields.Many2one('account.account',string='Expenses Account',related='service_cat.account_id')
|
||||
device_account_id = fields.Many2one('account.account',string='Expenses Account',related='device_id.account_id')
|
||||
accountant_id = fields.Many2one('res.users',string='Accountant',related='service_cat.accountant_id',readonly=False)
|
||||
service_producer_id = fields.Many2one('res.partner',string='Service Producer',related='service_cat.service_producer_id')
|
||||
is_service_producer = fields.Boolean(string='Is Service Producer?',related='service_cat.is_service_producer')
|
||||
|
|
@ -90,18 +91,22 @@ class ServiceRequest(models.Model):
|
|||
max_complete_building_house_amount = fields.Float(string='Max Complete Building House Amount',related='service_cat.max_complete_building_house_amount')
|
||||
#Fields for electrical_devices service
|
||||
device_id = fields.Many2one('electrical.devices',string='Device',domain="[('min_count_member','<=',benefit_member_count),('max_count_member','>=',benefit_member_count)]")
|
||||
vendor_bill = fields.Many2one('account.move')
|
||||
requested_quantity = fields.Integer(string='Requested Quantity')
|
||||
exception_or_steal = fields.Boolean(string='Exception Or Steal?')
|
||||
state = fields.Selection([
|
||||
('draft', 'Draft'),
|
||||
('researcher', 'Researcher'),
|
||||
('send_request', 'Send Request'),
|
||||
('first_approve', 'Request First Approve'),
|
||||
('second_approve', 'Request Second Approve'),
|
||||
('accounting_approve', 'Accounting Approve'),
|
||||
('refused', 'Refused'),
|
||||
], string='state', default="draft", tracking=True)
|
||||
|
||||
state = fields.Selection( selection = [
|
||||
('draft', 'Draft'),
|
||||
('researcher', 'Researcher'),
|
||||
('send_request', 'Send Request'),
|
||||
('first_approve', 'Request First Approve'),
|
||||
('second_approve', 'Request Second Approve'),
|
||||
('accounting_approve', 'Accounting Approve'),
|
||||
('send_request_to_supplier', 'Send Request To Supplier'),
|
||||
('family_received_device', 'Family Received Device'),
|
||||
('refused', 'Refused')
|
||||
], string='state',default='draft', tracking=True)
|
||||
state_a = fields.Selection(related='state', tracking=False)
|
||||
state_b = fields.Selection(related='state', tracking=False)
|
||||
|
||||
# @api.model
|
||||
# def search(self, args, offset=0, limit=None, order=None, count=False):
|
||||
|
|
@ -297,6 +302,14 @@ class ServiceRequest(models.Model):
|
|||
for rec in self:
|
||||
rec.state = 'accounting_approve'
|
||||
|
||||
def action_send_request_to_supplier(self):
|
||||
for rec in self:
|
||||
rec.state = 'send_request_to_supplier'
|
||||
|
||||
def action_family_received_device(self):
|
||||
for rec in self:
|
||||
rec.state = 'family_received_device'
|
||||
|
||||
def action_accounting_first_refuse(self):
|
||||
for rec in self:
|
||||
rec.state = 'draft'
|
||||
|
|
@ -440,12 +453,12 @@ class ServiceRequest(models.Model):
|
|||
raise UserError(
|
||||
_("You Cannot request this service twice in seven years"))
|
||||
|
||||
@api.onchange('requested_quantity','service_type')
|
||||
@api.onchange('requested_quantity','benefit_type')
|
||||
def onchange_requested_quantity(self):
|
||||
res = {}
|
||||
for rec in self:
|
||||
if rec.requested_quantity > rec.device_id.allowed_quantity:
|
||||
self.service_type = False
|
||||
self.benefit_type = False
|
||||
res['warning'] = {'title': _('ValidationError'),
|
||||
'message': _("You cannot request more than %s") % rec.device_id.allowed_quantity}
|
||||
return res
|
||||
|
|
@ -523,4 +536,31 @@ class ServiceRequest(models.Model):
|
|||
'view_mode': 'form',
|
||||
'target': 'new',
|
||||
'context': {'default_service_ids': ids}
|
||||
}
|
||||
}
|
||||
def create_vendor_bill(self):
|
||||
ids = []
|
||||
line_ids = []
|
||||
for rec in self:
|
||||
ids.append(rec.id)
|
||||
service_requests = self.env['service.request'].browse(ids)
|
||||
service_producer_id = self.env['service.request'].search([('id','=',ids[0])],limit=1)
|
||||
if any(request.state not in 'family_received_device' for request in service_requests):
|
||||
raise UserError(_("All selected requests should be in Family Received Device state"))
|
||||
if any(request.vendor_bill for request in service_requests):
|
||||
raise UserError(_("All selected requests should be not has Vendor Bill"))
|
||||
for request in service_requests:
|
||||
invoice_line = (0, 0, {
|
||||
'name': f'{request.family_id.name}/{request.device_id.device_name}/{request.description}/{request.name}',
|
||||
'account_id': request.device_account_id.id,
|
||||
'analytic_account_id': request.branch_custom_id.branch.analytic_account_id.id,
|
||||
'quantity' : request.device_id.allowed_quantity,
|
||||
'price_unit' : request.requested_service_amount,
|
||||
})
|
||||
line_ids.append(invoice_line)
|
||||
vendor_bill = self.env['account.move'].create({
|
||||
'move_type':'in_invoice',
|
||||
'partner_id':service_producer_id.service_producer_id.id,
|
||||
# 'accountant_id': self.accountant_id.id,
|
||||
'invoice_line_ids': line_ids,
|
||||
})
|
||||
self.vendor_bill = vendor_bill
|
||||
|
|
@ -27,11 +27,20 @@
|
|||
string="Accounting First Refuse" class="oe_highlight"
|
||||
confirm="Are you sure you want to first refuse ?"
|
||||
states="second_approve" groups="odex_benefit.group_benefit_accounting_accept"/>
|
||||
<button name="action_send_request_to_supplier" type="object"
|
||||
string="Send Request To Supplier" class="oe_highlight"
|
||||
confirm="Are you sure you want to send request to supplier ?"
|
||||
groups="odex_benefit.group_benefit_accounting_accept" attrs="{'invisible': ['|',('service_type','!=','electrical_devices'),('state_b','!=','accounting_approve')]}" />
|
||||
<button name="action_family_received_device" type="object"
|
||||
string="Family Received Device" class="oe_highlight"
|
||||
groups="odex_benefit.group_benefit_accounting_accept" attrs="{'invisible': ['|',('service_type','!=','electrical_devices'),('state_b','!=','send_request_to_supplier')]}" />
|
||||
<button name="action_refuse" type="object"
|
||||
string="Refuse" class="oe_highlight"
|
||||
confirm="Are you sure you want to refuse request ?"
|
||||
states="first_approve,second_approve,draft,send_request,accounting_approve"/>
|
||||
<field name="state" widget="statusbar"/>
|
||||
<field name="state" widget="statusbar" invisible="1"/>
|
||||
<field name="state_a" widget="statusbar" statusbar_visible="draft,researcher,send_request,first_approve,second_approve,accounting_approve,refused" attrs="{'invisible': [('service_type','=','electrical_devices')]}"/>
|
||||
<field name="state_b" widget="statusbar" statusbar_visible="draft,researcher,send_request,first_approve,second_approve,accounting_approve,send_request_to_supplier,family_received_device,refused" attrs="{'invisible': [('service_type','!=','electrical_devices')]}" groups="odex_benefit.group_benefit_accounting_accept"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<field name="is_payment_order_done" invisible="1"/>
|
||||
|
|
@ -51,9 +60,11 @@
|
|||
<field name="benefit_member_count" force_save="1"/>
|
||||
<field name="branch_custom_id" force_save="1"/>
|
||||
<field name="member_id" attrs="{'invisible':[('benefit_type','!=','member')],'readonly':[('state','not in',['draft','researcher','send_request'])],'required':[('benefit_type','=','member')]}"/>
|
||||
<field name="account_id"/>
|
||||
<field name="account_id" attrs="{'invisible':[('service_type','=','electrical_devices')]}"/>
|
||||
<field name="device_account_id" attrs="{'invisible':[('service_type','!=','electrical_devices')]}"/>
|
||||
<field name="accountant_id" attrs="{'invisible':[('state','in',['draft','researcher','send_request','first_approve','second_approve'])]}"/>
|
||||
<field name="payment_order_id" readonly="1" groups="odex_benefit.group_benefit_accounting_accept"/>
|
||||
<field name="payment_order_id" readonly="1" groups="odex_benefit.group_benefit_accounting_accept" attrs="{'invisible':[('service_type','=','electrical_devices')]}"/>
|
||||
<field name="vendor_bill" readonly="1" attrs="{'invisible':[('service_type','!=','electrical_devices')]}"/>
|
||||
<field name="is_service_producer" invisible="1"/>
|
||||
<field name="service_producer_id" attrs="{'invisible':[('is_service_producer','=',False)],'readonly':[('state','not in',['draft','researcher','send_request'])]}"/>
|
||||
</group>
|
||||
|
|
@ -242,6 +253,18 @@
|
|||
<separator/>
|
||||
<filter string="Need Payment Order" name="payment_order_done" domain="[('payment_order_id', '=', False),('state','=','accounting_approve')]"/>
|
||||
<separator/>
|
||||
<separator/>
|
||||
<filter string="Need Vendor Bill" name="need_vendor_bill" domain="[('vendor_bill', '=', False),('state','=','family_received_device')]"/>
|
||||
<separator/>
|
||||
<separator/>
|
||||
<filter string="Vendor Bill Done" name="need_vendor_bill" domain="[('vendor_bill', '!=', False),('state','=','family_received_device')]"/>
|
||||
<separator/>
|
||||
<separator/>
|
||||
<filter string="Send Request To Supplier" name="send_request_to_supplier" domain="[('state','=','send_request_to_supplier')]"/>
|
||||
<separator/>
|
||||
<separator/>
|
||||
<filter string="Family Received Device" name="family_received_device" domain="[('state','=','family_received_device')]"/>
|
||||
<separator/>
|
||||
<searchpanel>
|
||||
<field name="service_cat" string="Categories" enable_counters="1" />
|
||||
</searchpanel>
|
||||
|
|
|
|||
Loading…
Reference in New Issue