work on mks

This commit is contained in:
sonal
2020-07-23 17:39:55 +05:30
parent 28a15500f7
commit 6ccb9acd5e
16 changed files with 543 additions and 0 deletions

10
mks_delivery/__init__.py Normal file
View File

@@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
##############################################################################
from . import models
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
##############################################################################
{
'name': 'MKS Delivery',
'version': '13.0.1.0',
'sequence': 1,
'category': 'Generic Modules/Sales Management',
'description':
"""
This Module add below functionality into odoo
1.Sale Field Service Task\n
""",
'summary': 'MKS Delivery',
'author': 'Masterkey',
'website': 'irfan@masterkeyglobal.com',
'depends': ['sale_management','industry_fsm','project','contacts'],
'data': [
'security/ir.model.access.csv',
'views/res_config_views.xml',
'views/sale_view.xml',
'views/zone_form_view.xml',
'views/city_form_view.xml',
'views/res_partner_view.xml',
'views/project_task_view.xml',
],
'demo': [],
'test': [],
'css': [],
'qweb': [],
'js': [],
'images': [],
'installable': True,
'application': True,
'auto_install': False,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
#
##############################################################################
from . import res_config
from . import sale
from . import zone_zone
from . import res_partner
from . import city_city
from . import project_task
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
#
##############################################################################
from odoo import models, fields, api
class city_city(models.Model):
_name = 'city.city'
name = fields.Char(string="Name")
code = fields.Char(string="Code")
zone_id = fields.Many2one('zone.zone',string="Zone")
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
#
##############################################################################
from odoo import models, fields, api,_
from odoo.exceptions import ValidationError
class project_task(models.Model):
_inherit='project.task'
state = fields.Selection([
('unassigned', 'Unassigned'),
('assigned','Assigned'),('accepted','Accepted'),
('started','Started'),('delivered','Delivered'),
('cancel','Cancel'),('issue','Issue'),
('paid','Paid'),('non_paid','Non Paid'),
], string='Status', readonly=True, copy=False, default='unassigned')
zone_id = fields.Many2one('zone.zone',string="Zone")
def action_assign(self):
self.state = 'assigned'
return True
def action_accept(self):
self.state = 'accepted'
return True
def action_start(self):
self.state = 'started'
return True
def action_delivery(self):
self.state = 'delivered'
return True
def action_cancel(self):
self.state = 'cancel'
return True
def action_issue(self):
self.state = 'issue'
return True
def action_paid(self):
self.state = 'paid'
return True
def action_non_paid(self):
self.state = 'non_paid'
return True
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
##############################################################################
from odoo import models, fields, api
class ResCompany(models.Model):
_inherit = 'res.company'
project_id = fields.Many2one('project.project',string='Project' ,readonly=False)
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
project_id = fields.Many2one(related='company_id.project_id',readonly=False, string='Project')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
#
##############################################################################
from odoo import models, fields, api,_
from odoo.exceptions import ValidationError
class res_partner(models.Model):
_inherit='res.partner'
city_id = fields.Many2one('city.city',string="City")
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
##############################################################################
from odoo import models, fields, api,_
from odoo.exceptions import ValidationError
class sale_order(models.Model):
_inherit='sale.order'
task_id = fields.Many2one('project.task',string='Field Services Task', \
copy=False)
def services_task_values(self):
if not self.company_id.project_id:
raise ValidationError(_('Project - Field Service Task not configured properly !'))
project_id = self.company_id.project_id and self.company_id.project_id.id \
or False
notes = "Notes:" + '<br/>'+"-----------------------"+'<br/>'+"Product: "\
+'<br/><br/>'
for line in self.order_line:
notes += str(line.product_id.name )+" : "+ str(line.product_uom_qty)\
+" qty" +'<br/>'
vals = {'name':self.name,
'partner_id': self.partner_id and self.partner_id.id or False,
'planned_date_begin': self.date_order,
'planned_date_end': self.date_order,
'project_id':project_id,
'description':notes,
'user_id':False,
'zone_id':self.partner_id.city_id and self.partner_id.city_id.zone_id and \
self.partner_id.city_id.zone_id.id or False,
}
return vals
def _prepare_project_task(self,task_values):
project_task_ids = self.env['project.task'].create(task_values)
self.task_id = project_task_ids.id
return True
def action_confirm(self):
res =super(sale_order,self).action_confirm()
task_values = self.services_task_values()
self._prepare_project_task(task_values)
return res
def action_view_task(self):
action = self.env.ref('industry_fsm.project_task_action_fsm').read()[0]
task_id = self.mapped('task_id')
if task_id:
action['views'] = [
(self.env.ref('industry_fsm.project_task_view_form').id, 'form')]
action['res_id'] = task_id.id
return action
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
#
##############################################################################
from odoo import models, fields, api
class zone_zone(models.Model):
_name = 'zone.zone'
name = fields.Char(string="Name",required=True)
code = fields.Char(string="Code")
zone_ids = fields.One2many('city.city','zone_id',string='Zone', \
copy=False)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@@ -0,0 +1,3 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_zone_zone","zone_zon","model_zone_zone",,1,1,1,1
"access_city_city","city_city","model_city_city",,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_zone_zone zone_zon model_zone_zone 1 1 1 1
3 access_city_city city_city model_city_city 1 1 1 1

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="city_form_view" model="ir.ui.view">
<field name="name">city.form.view</field>
<field name="model">city.city</field>
<field name="arch" type="xml">
<form string="City">
<sheet>
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="code"/>
<field name="zone_id"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="city_tree_View" model="ir.ui.view">
<field name="name">city.tree.view</field>
<field name="model">city.city</field>
<field name="arch" type="xml">
<tree string="City">
<field name='name'/>
<field name='code'/>
</tree>
</field>
</record>
<record id="action_city_view" model="ir.actions.act_window">
<field name="name">City</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">city.city</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name= "City" id='menu_city_id' parent="contacts.res_partner_menu_config" action="action_city_view" sequence="21"/>
</odoo>

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="project_task_view_zone" model="ir.ui.view">
<field name="name">project.task.view.zone</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="industry_fsm.project_task_view_form"/>
<field name="arch" type="xml">
<xpath expr="//sheet" position='before'>
<header>
<button name="action_assign" type="object" string="Assigned" states="unassigned" class="oe_highlight" />
<button name="action_accept" type="object" string="Accept" states="assigned" class="oe_highlight" />
<button name="action_start" type="object" string="Start" states="accepted,issue" class="oe_highlight" />
<button name="action_delivery" type="object" string="Delivered" states="started" class="oe_highlight" />
<button name="action_cancel" type="object" string="Cancel" states="started,issue" class="oe_highlight" />
<button name="action_issue" type="object" string="Issue" states="started" class="oe_highlight" />
<button name="action_paid" type="object" string="Paid" states="delivered" class="oe_highlight" />
<button name="action_non_paid" type="object" string="Non Paid" states="delivered" class="oe_highlight" />
<field name="state" widget="statusbar" statusbar_visible="unassigned,assigned,accepted,started,delivered"/>
</header>
</xpath>
<xpath expr="//field[@name='project_id']" position="after">
<field name="zone_id" />
</xpath>
<xpath expr="//field[@name='name']" position="replace">
<field name="name" string="Sale Order Number" />
</xpath>
<xpath expr="//field[@name='project_id']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
</field>
</record>
<!-- search view-->
<record id="project_task_Service_search" model="ir.ui.view">
<field name="name">project.task.Service.search</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="industry_fsm.project_task_view_search_fsm"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="after">
<field name="zone_id" />
<field name="state" />
</xpath>
<xpath expr="//filter[@name='groupby_stage']" position="replace"/>
<xpath expr="//filter[@name='groupby_project']" position="replace"/>
<xpath expr="//filter[@name='groupby_company']" position="after">
<filter string="Zone" name="zone_id" context="{'group_by':'zone_id'}" />
<filter string="Status" name="state" context="{'group_by':'state'}"/>
</xpath>
<xpath expr="//filter[@name='planned_future']" position="after">
<separator/>
<filter string="Unassigned" name="unassigned" domain="[('state','=','unassigned')]"/>
<filter string="Assigned" name="assigned" domain="[('state','=','assigned')]"/>
<filter string="Accepted" name="accepted" domain="[('state','=','accepted')]"/>
<filter string="Started" name="started" domain="[('state','=','started')]"/>
<filter string="Delivered" name="delivered" domain="[('state','=','delivered')]"/>
<filter string="Cancel" name="cancel" domain="[('state','=','cancel')]"/>
<filter string="Issue" name="cancel" domain="[('state','=','issue')]"/>
<filter string="Paid" name="paid" domain="[('state','=','paid')]"/>
<filter string="Non Paid" name="non_paid" domain="[('state','=','non_paid')]"/>
</xpath>
</field>
</record>
<!-- tree vies-->
<record id="project_task_list_view" model="ir.ui.view">
<field name="name">project.task.list.view</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="industry_fsm.project_task_view_list_fsm"/>
<field name="arch" type="xml">
<xpath expr="//tree" position="replace">
<tree string="Tasks" decoration-danger="state=='cancel'" decoration-info="state=='assigned'"
decoration-success="state=='delivered'"
decoration-warning="state=='issue'"
decoration-primary="state=='started'" >
<field name="name" string="Sale Order Number"/>
<field name="partner_id" />
<field name="zone_id" />
<field name="partner_phone" />
<field name="partner_email" />
<field name="user_id" invisible="context.get('user_invisible', False)"/>
<field name="planned_date_begin"/>
<field name="planned_date_end"/>
<field name="state"/>
</tree>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<odoo>
<record id="res_config_sale_project" model="ir.ui.view">
<field name="name">res.config.sale.project</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="50"/>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@data-key='sale_management']//h2" position="before">
<h2>Project - Field Service Task</h2>
<div class="row mt16 o_settings_container" id="product_deposit">
<div class="col-xs-12 o_setting_box">
<group>
<field name="project_id" domain="[('is_fsm', '=', True)]" style="width:80%%"/>
</group>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="zone_res_partner_view_inherit" model="ir.ui.view">
<field name="name">zone.res.partner.view.inherit</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='street2']" position="after" >
<field name="city_id" placeholder="City" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="sale_task_view" model="ir.ui.view">
<field name="name">sale.order.inherit</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//button[@name='preview_sale_order']" position="before">
<button type="object" name="action_view_task" attrs="{'invisible': [('state', 'not in',['sale','done'])]}" string='Field Services' class="oe_stat_button" icon="fa-align-justify" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="zone_form_view" model="ir.ui.view">
<field name="name">zone.form.view</field>
<field name="model">zone.zone</field>
<field name="arch" type="xml">
<form string="Zone">
<sheet>
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="code"/>
</group>
</group>
<notebook>
<page string="Zone" >
<field name='zone_ids'>
<tree editable="bottom">
<field name='name'/>
<field name='code'/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="zone_zone_tree_View" model="ir.ui.view">
<field name="name">zone.zone.tree.view</field>
<field name="model">zone.zone</field>
<field name="arch" type="xml">
<tree string="Zone">
<field name='name'/>
<field name='code'/>
</tree>
</field>
</record>
<record id="action_zone_view" model="ir.actions.act_window">
<field name="name">Zone</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">zone.zone</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name ="Zone" id='menu_zone_id' parent="contacts.res_partner_menu_config" action="action_zone_view" sequence="20"/>
</odoo>