diff --git a/mks_delivery/__init__.py b/mks_delivery/__init__.py
new file mode 100644
index 0000000..562cc06
--- /dev/null
+++ b/mks_delivery/__init__.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+#
+##############################################################################
+
+from . import models
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/mks_delivery/__manifest__.py b/mks_delivery/__manifest__.py
new file mode 100644
index 0000000..aaff885
--- /dev/null
+++ b/mks_delivery/__manifest__.py
@@ -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:
diff --git a/mks_delivery/models/__init__.py b/mks_delivery/models/__init__.py
new file mode 100644
index 0000000..13a6ec0
--- /dev/null
+++ b/mks_delivery/models/__init__.py
@@ -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:
diff --git a/mks_delivery/models/city_city.py b/mks_delivery/models/city_city.py
new file mode 100644
index 0000000..0bd3a9d
--- /dev/null
+++ b/mks_delivery/models/city_city.py
@@ -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:
diff --git a/mks_delivery/models/project_task.py b/mks_delivery/models/project_task.py
new file mode 100644
index 0000000..5c5f0a5
--- /dev/null
+++ b/mks_delivery/models/project_task.py
@@ -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:
diff --git a/mks_delivery/models/res_config.py b/mks_delivery/models/res_config.py
new file mode 100644
index 0000000..55c6440
--- /dev/null
+++ b/mks_delivery/models/res_config.py
@@ -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:
diff --git a/mks_delivery/models/res_partner.py b/mks_delivery/models/res_partner.py
new file mode 100644
index 0000000..d875dc7
--- /dev/null
+++ b/mks_delivery/models/res_partner.py
@@ -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:
diff --git a/mks_delivery/models/sale.py b/mks_delivery/models/sale.py
new file mode 100644
index 0000000..5dd20d7
--- /dev/null
+++ b/mks_delivery/models/sale.py
@@ -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:" + '
'+"-----------------------"+'
'+"Product: "\
+ +'
'
+ for line in self.order_line:
+ notes += str(line.product_id.name )+" : "+ str(line.product_uom_qty)\
+ +" qty" +'
'
+ 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:
diff --git a/mks_delivery/models/zone_zone.py b/mks_delivery/models/zone_zone.py
new file mode 100644
index 0000000..8d6937a
--- /dev/null
+++ b/mks_delivery/models/zone_zone.py
@@ -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:
diff --git a/mks_delivery/security/ir.model.access.csv b/mks_delivery/security/ir.model.access.csv
new file mode 100644
index 0000000..150f822
--- /dev/null
+++ b/mks_delivery/security/ir.model.access.csv
@@ -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
diff --git a/mks_delivery/views/city_form_view.xml b/mks_delivery/views/city_form_view.xml
new file mode 100644
index 0000000..cfab467
--- /dev/null
+++ b/mks_delivery/views/city_form_view.xml
@@ -0,0 +1,42 @@
+
+
+
+ city.form.view
+ city.city
+
+
+
+
+
+
+ city.tree.view
+ city.city
+
+
+
+
+
+
+
+
+
+ City
+ ir.actions.act_window
+ city.city
+ tree,form
+
+
+
+
diff --git a/mks_delivery/views/project_task_view.xml b/mks_delivery/views/project_task_view.xml
new file mode 100644
index 0000000..2a5ba78
--- /dev/null
+++ b/mks_delivery/views/project_task_view.xml
@@ -0,0 +1,100 @@
+
+
+
+ project.task.view.zone
+ project.task
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+ project.task.Service.search
+ project.task
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ project.task.list.view
+ project.task
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mks_delivery/views/res_config_views.xml b/mks_delivery/views/res_config_views.xml
new file mode 100644
index 0000000..c33b9f5
--- /dev/null
+++ b/mks_delivery/views/res_config_views.xml
@@ -0,0 +1,24 @@
+
+
+
+ res.config.sale.project
+ res.config.settings
+
+
+
+
+ Project - Field Service Task
+
+
+
+
+
+
+
+
diff --git a/mks_delivery/views/res_partner_view.xml b/mks_delivery/views/res_partner_view.xml
new file mode 100644
index 0000000..4671042
--- /dev/null
+++ b/mks_delivery/views/res_partner_view.xml
@@ -0,0 +1,13 @@
+
+
+
+ zone.res.partner.view.inherit
+ res.partner
+
+
+
+
+
+
+
+
diff --git a/mks_delivery/views/sale_view.xml b/mks_delivery/views/sale_view.xml
new file mode 100644
index 0000000..329f09d
--- /dev/null
+++ b/mks_delivery/views/sale_view.xml
@@ -0,0 +1,13 @@
+
+
+
+ sale.order.inherit
+ sale.order
+
+
+
+
+
+
+
+
diff --git a/mks_delivery/views/zone_form_view.xml b/mks_delivery/views/zone_form_view.xml
new file mode 100644
index 0000000..485148a
--- /dev/null
+++ b/mks_delivery/views/zone_form_view.xml
@@ -0,0 +1,51 @@
+
+
+
+ zone.form.view
+ zone.zone
+
+
+
+
+
+
+ zone.zone.tree.view
+ zone.zone
+
+
+
+
+
+
+
+
+
+ Zone
+ ir.actions.act_window
+ zone.zone
+ tree,form
+
+
+
+