Browse Source

Uploaded

pull/3/head
cybroodoo 9 years ago
parent
commit
e2989aec93
  1. 1
      med_marketing/__init__.py
  2. 25
      med_marketing/__openerp__.py
  3. 138
      med_marketing/demo/demo.xml
  4. 1
      med_marketing/models/__init__.py
  5. 33
      med_marketing/models/doctor.py
  6. 72
      med_marketing/models/doctor_exp.py
  7. 14
      med_marketing/models/med_marketing.py
  8. 18
      med_marketing/models/rep.py
  9. BIN
      med_marketing/static/description/icon.png
  10. BIN
      med_marketing/static/img/dr1.jpg
  11. BIN
      med_marketing/static/img/dr2.jpg
  12. BIN
      med_marketing/static/img/dr3.jpg
  13. BIN
      med_marketing/static/img/dr4.jpg
  14. BIN
      med_marketing/static/img/dr6.jpg
  15. BIN
      med_marketing/static/img/dr7.jpg
  16. 81
      med_marketing/views/doctor_exp_view.xml
  17. 81
      med_marketing/views/doctor_view.xml
  18. 217
      med_marketing/views/med_marketing_view.xml
  19. 63
      med_marketing/views/rep_view.xml
  20. 1
      medical_feature/__init__.py
  21. 28
      medical_feature/__openerp__.py
  22. 335
      medical_feature/demo/demo.xml
  23. 1
      medical_feature/expiry_manage/__init__.py
  24. 52
      medical_feature/expiry_manage/expiry_manage.py
  25. 56
      medical_feature/expiry_manage/expiry_manage_view.xml
  26. 170
      medical_feature/new_names.xml
  27. 32
      medical_feature/pharmacy_mgt.py
  28. 1
      medical_feature/route_manage/__init__.py
  29. 30
      medical_feature/route_manage/report.xml
  30. 237
      medical_feature/route_manage/route_manage_view.xml
  31. 89
      medical_feature/route_manage/route_mgt.py
  32. BIN
      medical_feature/static/description/icon.png
  33. BIN
      medical_feature/static/img/Acetylcysteine.jpg
  34. BIN
      medical_feature/static/img/Azithromycin.jpg
  35. BIN
      medical_feature/static/img/Carbomer_liquid_eye_gels.jpg
  36. BIN
      medical_feature/static/img/allr_Celiprolol.jpg
  37. BIN
      medical_feature/static/img/allr_Cetirizine.jpg
  38. BIN
      medical_feature/static/img/allr_Dimethindene.jpg
  39. BIN
      medical_feature/static/img/er_amoxicillin-1.jpg
  40. BIN
      medical_feature/static/img/gs_Aciphex.jpg
  41. BIN
      medical_feature/static/img/gs_Gleevec.jpg
  42. BIN
      medical_feature/static/img/gs_gastrogafin.jpg
  43. BIN
      medical_feature/static/img/re_clarithromycin.jpg
  44. 28
      medical_feature/views/medicines_view.xml
  45. 174
      medical_feature/views/pharmacy_mgt_view.xml

1
med_marketing/__init__.py

@ -0,0 +1 @@
import models

25
med_marketing/__openerp__.py

@ -0,0 +1,25 @@
{
'name': "Pharmacy Marketing",
'summary': """Sales Representative, Doctors, Targets,..etc for Medicine filed """,
'description': """
""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'category': 'Medicine',
'version': '0.1',
'depends': ["base",
'medical_feature',
"sale", "marketing",
"marketing_campaign",
"hr", "account",
"hr_payroll"],
'data': ['views/med_marketing_view.xml',
'views/rep_view.xml',
'views/doctor_view.xml',
'views/doctor_exp_view.xml', ],
'demo': ['demo/demo.xml'],
'installable': True,
'auto_install': False,
'application': True,
}

138
med_marketing/demo/demo.xml

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--DEMO DATA [DEPARTMENTS]-->
<record id="departments1" model="pha_marketing.departments">
<field name="name">Neurology</field>
</record>
<record id="departments2" model="pha_marketing.departments">
<field name="name">Cardiology</field>
</record>
<record id="departments3" model="pha_marketing.departments">
<field name="name">Dentistry</field>
</record>
<record id="departments4" model="pha_marketing.departments">
<field name="name">ENT</field>
</record>
<record id="departments5" model="pha_marketing.departments">
<field name="name">Gynaecology</field>
</record>
<record id="departments6" model="pha_marketing.departments">
<field name="name">Pediatrics</field>
</record>
<!--DEMO REPS-->
<record id="rep1" model="hr.employee">
<field name="name">Liam Gomer</field>
<field name="rep">1</field>
<field name="target">150000</field>
</record>
<record id="rep2" model="hr.employee">
<field name="name">Roger Scott</field>
<field name="rep">1</field>
<field name="target">450000</field>
<field name="image" type="base64" file="hr/static/img/employee_fp-image.jpg"/>
</record>
<record id="rep3" model="hr.employee">
<field name="name">David</field>
<field name="rep">1</field>
<field name="target">850000</field>
<field name="image" type="base64" file="hr/static/img/employee_al-image.jpg"/>
</record>
<record id="rep4" model="hr.employee">
<field name="name">Macklin</field>
<field name="rep">1</field>
<field name="target">780000</field>
<field name="image" type="base64" file="hr/static/img/employee_niv-image.jpg"/>
</record>
<record id="rep5" model="hr.employee">
<field name="name">Jack</field>
<field name="rep">1</field>
<field name="target">750000</field>
<field name="image" type="base64" file="hr/static/img/employee_mit-image.png"/>
</record>
<record id="rep6" model="hr.employee">
<field name="name">Joe</field>
<field name="rep">1</field>
<field name="target">960000</field>
<field name="image" type="base64" file="hr/static/img/employee_chs-image.jpg"/>
</record>
<!--DEMO DOCTORS-->
<record id="dr1" model="res.partner">
<field name="name">Dr. Arden</field>
<field name="doctor">1</field>
<field name="customer">1</field>
<field name="specialist_in" ref="departments2"/>
<field name="related_rep" ref="rep1"/>
<field name="target">15000</field>
<field name="email">arden@gmail.com</field>
<field name="mobile">2653241536</field>
<field name="image" type="base64" file="med_marketing/static/img/dr1.jpg"/>
</record>
<record id="dr2" model="res.partner">
<field name="name">Dr.Armstrong</field>
<field name="doctor">1</field>
<field name="customer">0</field>
<field name="specialist_in" ref="departments3"/>
<field name="related_rep" ref="rep2"/>
<field name="target">26000</field>
<field name="email">armstrong@gmail.com</field>
<field name="mobile">2653651436</field>
<field name="image" type="base64" file="med_marketing/static/img/dr2.jpg"/>
</record>
<record id="dr3" model="res.partner">
<field name="name">Dr.Saunder</field>
<field name="doctor">1</field>
<field name="customer">0</field>
<field name="specialist_in" ref="departments4"/>
<field name="related_rep" ref="rep3"/>
<field name="target">78000</field>
<field name="email">saunder@yahoo.com</field>
<field name="mobile">2653365436</field>
<field name="image" type="base64" file="med_marketing/static/img/dr3.jpg"/>
</record>
<record id="dr4" model="res.partner">
<field name="name">Dr.Asbjorn</field>
<field name="doctor">1</field>
<field name="customer">0</field>
<field name="specialist_in" ref="departments5"/>
<field name="related_rep" ref="rep4"/>
<field name="target">75000</field>
<field name="email">asbjorn@yahoo.com</field>
<field name="mobile">2657415436</field>
<field name="image" type="base64" file="med_marketing/static/img/dr4.jpg"/>
</record>
<record id="dr5" model="res.partner">
<field name="name">Dr.Salomon</field>
<field name="doctor">1</field>
<field name="customer">0</field>
<field name="specialist_in" ref="departments6"/>
<field name="related_rep" ref="rep5"/>
<field name="target">85000</field>
<field name="email">salomon@yahoo.com</field>
<field name="mobile">4877415436</field>
<field name="image" type="base64" file="med_marketing/static/img/dr6.jpg"/>
</record>
<record id="dr6" model="res.partner">
<field name="name">Dr.Saunderson</field>
<field name="doctor">1</field>
<field name="customer">0</field>
<field name="specialist_in" ref="departments1"/>
<field name="related_rep" ref="rep6"/>
<field name="target">65000</field>
<field name="email">saunderson@gmail.com</field>
<field name="mobile">6987415436</field>
<field name="image" type="base64" file="med_marketing/static/img/dr7.jpg"/>
</record>
</data>
</openerp>

1
med_marketing/models/__init__.py

@ -0,0 +1 @@
import doctor,med_marketing,rep,doctor_exp

33
med_marketing/models/doctor.py

@ -0,0 +1,33 @@
from openerp import models, fields, api
import datetime
from dateutil import parser
class Doctors(models.Model):
_inherit = 'res.partner'
doctor = fields.Boolean('Doctor')
specialist_in = fields.Many2one('pha_marketing.departments', 'Specialist in')
related_rep = fields.Many2one('hr.employee', string='Related Rep.', domain="[('rep','=',True)]")
target = fields.Integer('Doctor Target')
@api.one
def _get_total_sale(self):
total = 0.0
created_domain = [('type', 'in', ['out_invoice', 'out_refund']), ('state', 'not in', ['draft', 'cancel']), ]
for EACH_REPORT in self.env['account.invoice.report'].search(created_domain):
if self.zip == EACH_REPORT.partner_id.zip:
if self.specialist_in.id in EACH_REPORT.product_id.uses_in.ids:
if parser.parse(EACH_REPORT.date).month == datetime.date.today().month:
total_doctor = 0
for EACH_Doctor in self.search([('doctor', '=', True)]):
if EACH_Doctor.zip == self.zip and EACH_Doctor.specialist_in.id in EACH_REPORT.product_id.uses_in.ids:
total_doctor += 1
if total_doctor != 0:
total += (EACH_REPORT.price_total/total_doctor)
self.total_sale = total
total_sale = fields.Integer('Total sale', compute='_get_total_sale', help='Will calculate the doctors by considering zip code of both Doctors and Retailers and compare the department of doctor with use of sold medicines.')

72
med_marketing/models/doctor_exp.py

@ -0,0 +1,72 @@
from openerp import models, fields,api
import datetime
class DoctorBenefit(models.Model):
_name = 'med_marketing.doctor.line'
name = fields.Char('Description')
doctor_id = fields.Many2one('res.partner')
account_id = fields.Many2one('account.account', 'Account')
amt = fields.Float('Cost')
exp_account = fields.Many2one('account.account', 'Expenses Account')
state = fields.Selection([('unposted', 'Draft'), ('posted', 'Posted'), ], default="unposted")
journal_id = fields.Many2one('account.journal', 'Journal')
@api.one
def post_confirm(self):
self.state = 'posted'
ref = 'DRX' + str(datetime.datetime.now().year) + str(self.id).zfill(4)
num = 'DRX' + '/' + str(datetime.datetime.now().year) + '/' + str(self.id).zfill(4)
if self.name == False:
description = ''
else:
description = self.name
j_lines_list = []
j_lines_1 = {'name': description,
'partner_id': None,
'account_id': self.account_id.id,
'debit': 0.0,
'credit': self.amt,
}
j_lines_list.append((0, 0, j_lines_1))
j_lines_2 = {'name': description,
'partner_id': None,
'account_id': self.exp_account.id,
'debit': self.amt,
'credit': 0.0,
}
j_lines_list.append((0, 0, j_lines_2))
j_values = {'name': num,
'journal_id': self.journal_id.id,
'ref': ref,
'state': 'posted'
}
j_values.update({'line_id': j_lines_list})
j_obj = self.pool.get('account.move')
j_obj.create(self._cr, self._uid, j_values)
class Doctors(models.Model):
_inherit = 'res.partner'
@api.one
def get_current_id(self):
return self.id
def doctor_exp_btn(self, cr, uid, ids, context=None):
created_domain = '[("doctor_id","in",'+str(self.get_current_id(cr, uid, ids, context))+')]'
return {
'name':'Doctor Expenses',
'type': 'ir.actions.act_window',
'res_model': 'med_marketing.doctor.line',
'view_type': 'form',
'view_mode': 'tree,form',
'target': 'current',
'domain': created_domain,
}

14
med_marketing/models/med_marketing.py

@ -0,0 +1,14 @@
from openerp import models, fields,api
class MedicalDepartments(models.Model):
_name = 'pha_marketing.departments'
name = fields.Char('Name of Department')
class MedicinesInfo(models.Model):
_inherit = "product.template"
uses_in = fields.Many2many('pha_marketing.departments', 'name')

18
med_marketing/models/rep.py

@ -0,0 +1,18 @@
from openerp import models, fields,api
class RepEmployee(models.Model):
_inherit = 'hr.employee'
rep = fields.Boolean('Medical Representative')
commission = fields.Float('Commission')
target = fields.Integer('Target')
@api.one
def _get_total_sale(self):
total = 0.0
for EACH_Doctor in self.env['res.partner'].search([('doctor', '=', True)]):
if EACH_Doctor.related_rep.id == self.id:
total += EACH_Doctor.total_sale
self.total_sale = total
total_sale = fields.Integer('Total sale', compute='_get_total_sale')

BIN
med_marketing/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
med_marketing/static/img/dr1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
med_marketing/static/img/dr2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
med_marketing/static/img/dr3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
med_marketing/static/img/dr4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
med_marketing/static/img/dr6.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
med_marketing/static/img/dr7.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 KiB

81
med_marketing/views/doctor_exp_view.xml

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--FORM [DOCTOR EXPENSES]-->
<record id="form_doctor_exp" model="ir.ui.view">
<field name="name">med_marketing.doctor.line.form</field>
<field name="model">med_marketing.doctor.line</field>
<field name="arch" type="xml">
<form>
<header>
<button string="Post" states="unposted" name="post_confirm" type="object" class="oe_highlight"/>
<field name="state" widget="statusbar" statusbar_visible="unposted,posted"/>
</header>
<sheet>
<group>
<group>
<field name="name" attrs="{'readonly':[('state', 'in', ('posted'))]}"/>
<field name="doctor_id"
domain="[('doctor', '=', True)]"
context="{'search_default_doctor':1, 'default_doctor':1, 'default_supplier':0, 'default_customer':0}"
attrs="{'readonly':[('state', 'in', ('posted'))]}"/>
<field name="amt"
attrs="{'readonly':[('state', 'in', ('posted'))]}"/>
</group>
<group>
<field name="journal_id" required="1" attrs="{'readonly':[('state', 'in', ('posted'))]}"/>
<field name="account_id"
domain="[('type', 'in', ['liquidity', 'payable'])]"
required="1"
attrs="{'readonly':[('state', 'in', ('posted'))]}"/>
<field name="exp_account"
domain="[('user_type.report_type','=','expense'), ('type','!=','view')]"
required="1"
attrs="{'readonly':[('state', 'in', ('posted'))]}"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!--TREE [DOCTOR EXPENSES]-->
<record id="tree_doctor_exp" model="ir.ui.view">
<field name="name">med_marketing.doctor.line.tree</field>
<field name="model">med_marketing.doctor.line</field>
<field name="arch" type="xml">
<tree colors="blue:state=='unposted'">
<field name="name"/>
<field name="doctor_id"/>
<field name="account_id"/>
<field name="amt"/>
<field name="exp_account"/>
<field name="state"/>
</tree>
</field>
</record>
<!--ACTION [DOCTOR EXPENSES]-->
<record id="action_doctor_exp" model="ir.actions.act_window">
<field name="name">Doctor Benefits</field>
<field name="res_model">med_marketing.doctor.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a new doctor benefits.
</p>
</field>
</record>
<!--MENU [DOCTOR EXPENSES]-->
<menuitem action="action_doctor_exp"
id="menu_doctor_exp"
sequence="3"
parent="med_marketing.menu_marketing"/>
</data>
</openerp>

81
med_marketing/views/doctor_view.xml

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--SEARCH [DOCTORS]-->
<record id="search_res_partner_doctor" model="ir.ui.view">
<field name="name">res.partner.doctor</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="arch" type="xml">
<xpath expr="//filter[@name='supplier']" position="after">
<filter string="Doctors"
name="doctor"
domain="[('doctor','=',1)]"
help="Doctor Partners"/>
</xpath>
</field>
</record>
<!--FORM [DOCTOR]-->
<record id="form_res_partner_doctor" model="ir.ui.view">
<field name="name">res.partner.doctor</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='sales_purchases']/group[1]/group[2]" position="inside">
<field name="doctor"/>
</xpath>
<xpath expr="//field[@name='parent_id']" position="before">
<label for="specialist_in" string="Specialist in" attrs="{'invisible': [('doctor', '=', False)]}"/>
<field name="specialist_in"
attrs="{'invisible': [('doctor', '=', False)]}"/>
<label for="related_rep" string="Related Medical Representative" attrs="{'invisible': [('doctor', '=', False)]}"/>
<field name="related_rep"
context="{'default_rep':1}"
attrs="{'invisible': [('doctor', '=', False)]}"/>
</xpath>
<xpath expr="//group[1]/group[1]" position="inside">
<field name="target"
attrs="{'invisible': [('doctor', '=', False)]}"/>
<field name="total_sale"
attrs="{'invisible': [('doctor', '=', False)]}"/>
</xpath>
<xpath expr="//div[@name='buttons']" position="inside">
<button string="Benefits"
name="doctor_exp_btn"
class="oe_stat_button"
icon="fa fa-gift"
type="object"
attrs="{'invisible': [('doctor', '=', False)]}"/>
</xpath>
</field>
</record>
<!--ACTION [DOCTORS]-->
<record id="action_partner_doctor" model="ir.actions.act_window">
<field name="name">Doctors</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{"search_default_doctor":1, "default_doctor":1, "default_supplier":0, "default_customer":0}</field>
<field name="search_view_id" ref="base.view_res_partner_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a contact in your address book.
</p><p>
Odoo helps you easily track all activities related to
a doctor.
</p>
</field>
</record>
<!--MENU [DOCTORS]-->
<menuitem action="action_partner_doctor"
id="menu_partner_doctor"
sequence="3"
parent="med_marketing.menu_marketing"/>
</data>
</openerp>

217
med_marketing/views/med_marketing_view.xml

@ -0,0 +1,217 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--MENU [MARKETING]-->
<menuitem name="Marketing"
id="menu_marketing"
sequence="40"
parent="medical_feature.menu_med_features"
groups="medical_feature.group_medical_user" />
<!--DEPARTMENT IN PRODUCT-->
<record model="ir.ui.view" id="product_template_view_inherited">
<field name="name">product.template.form.inherited</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='type']" position="before">
<field string="Uses in" name="uses_in" widget="many2many_tags"/>
</xpath>
</field>
</record>
<!--TREE VIEW [DEPARTMENTS]-->
<record model="ir.ui.view" id="view_departments_tree">
<field name="name">pha_marketing.departments.tree</field>
<field name="model">pha_marketing.departments</field>
<field name="arch" type="xml">
<tree>
<field name="name" required="1"/>
</tree>
</field>
</record>
<!--FORM VIEW [DEPARTMENTS]-->
<record model="ir.ui.view" id="view_departments_form">
<field name="name">pha_marketing.departments.form</field>
<field name="model">pha_marketing.departments</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name" required="1"/>
</group>
</sheet>
</form>
</field>
</record>
<!--ACTION [DEPARTMENTS]-->
<record id="action_departments" model="ir.actions.act_window">
<field name="name">Departments</field>
<field name="res_model">pha_marketing.departments</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!--MENU [DEPARTMENTS]-->
<menuitem action="action_departments"
id="menu_departments" parent="medical_feature.menu_med_conf"
sequence="2"/>
<!--KANBEN [RES.PARTNER] OVERRIDDEN-->
<record model="ir.ui.view" id="base.res_partner_kanban_view">
<field name="name">res.partner.kanban</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<kanban>
<field name="color"/>
<field name="display_name"/>
<field name="title"/>
<field name="email"/>
<field name="parent_id"/>
<field name="is_company"/>
<field name="function"/>
<field name="phone"/>
<field name="street"/>
<field name="street2"/>
<field name="zip"/>
<field name="city"/>
<field name="country_id"/>
<field name="mobile"/>
<field name="state_id"/>
<field name="category_id"/>
<field name="has_image"/>
<field name="doctor"/>
<field name="target"/>
<field name="total_sale"/>
<field name="related_rep"/>
<field name="specialist_in"/>
<templates>
<t t-name="kanban-box">
<div style="width: 100%; height:200px;color: navy; background-color: #ffe6f9; border: 2px solid #cc0099; padding: 5px;">
<table>
<tr>
<td >
<div style="width:20%">
<div style="width: 30%;" id="div_kanban_border">
<div class="oe_kanban_vignette oe_semantic_html_override">
<t t-set="border">oe_kanban_color_red</t>
<a type="open">
<t t-if="record.has_image.raw_value === true">
<img t-att-src="kanban_image('res.partner', 'image_small', record.id.value)" class="oe_kanban_image"/>
</t>
<t t-if="record.has_image.raw_value === false">
<t t-if="record.is_company.raw_value === true">
<img t-att-src='_s + "/base/static/src/img/company_image.png"' class="oe_kanban_image"/>
</t>
<t t-if="record.is_company.raw_value === false">
<img t-att-src='_s + "/base/static/src/img/avatar.png"' class="oe_kanban_image"/>
</t>
</t>
</a>
<div class="oe_kanban_details">
<h4 class="oe_partner_heading"><a type="open"><field name="display_name"/></a></h4>
<h5><field name="specialist_in"/></h5>
<div class="oe_kanban_partner_categories"/>
<div class="oe_kanban_partner_links"/>
<ul>
<li t-if="record.parent_id.raw_value and !record.function.raw_value"><field name="parent_id"/></li>
<li t-if="!record.parent_id.raw_value and record.function.raw_value"><field name="function"/></li>
<li t-if="record.parent_id.raw_value and record.function.raw_value"><field name="function"/> at <field name="parent_id"/></li>
<li t-if="record.city.raw_value and !record.country_id.raw_value"><field name="city"/></li>
<li t-if="!record.city.raw_value and record.country_id.raw_value"><field name="country_id"/></li>
<li t-if="record.city.raw_value and record.country_id.raw_value"><field name="city"/>, <field name="country_id"/></li>
<li t-if="record.email.raw_value"><a t-attf-href="mailto:#{record.email.raw_value}"><field name="email"/></a></li>
</ul>
</div>
</div>
</div>
</div>
</td>
<td>
<div attrs="{'invisible': [('target', '=', 0)]}" style="width: 30%;">
<div class="oe_center" attrs="{'invisible': [('doctor', '=', False)]}">
<field name="total_sale" widget="gauge" style="width:120px; height: 90px; cursor: pointer;"
options="{'max_field': 'target'}">Doctor Target</field>
<h5 style="color:black;">Related Rep.</h5>
<field name="related_rep" string="Related Rep."/>
</div>
</div>
</td>
</tr>
</table>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!--KANBEN [HR.EMPLOYEE] OVERRIDDEN-->
<record model="ir.ui.view" id="hr.hr_kanban_view_employees">
<field name="name">HR - Employess Kanban</field>
<field name="model">hr.employee</field>
<field name="priority">10</field>
<field name="arch" type="xml">
<kanban>
<field name="last_login"/>
<field name="message_is_follower"/>
<field name="message_follower_ids"/>
<field name="message_ids"/>
<field name="rep"/>
<field name="target"/>
<field name="total_sale"/>
<templates>
<t t-name="kanban-box">
<div style="width: 100%; height:200px;color: navy; background-color: #cce0ff; border: 2px solid #0066ff; padding: 5px;">
<div class="oe_employee_vignette">
<div class="oe_employee_image">
<a type="open"><img t-att-src="kanban_image('hr.employee', 'image_medium', record.id.value)" class="oe_employee_picture"/></a>
</div>
<div class="oe_employee_details">
<h4>
<a type="open"><field name="name"/><t t-if="record.login.raw_value"> (<field name="login"/>)</t></a>
</h4>
<ul>
<li id="last_login">
<span t-if="record.last_login.raw_value &amp;&amp; record.last_login.raw_value.is().today()" class="oe_kanban_button" style="font-size: 100%%">
<t t-esc="record.last_login.raw_value.toString('HH:mm')"/>
</span>
</li>
<li t-if="record.job_id.raw_value"><field name="job_id"/></li>
<li t-if="record.work_location.raw_value"><field name="work_location"/></li>
<li t-if="record.work_email.raw_value"><a t-attf-href="mailto:#{record.work_email.value}"><field name="work_email"/></a></li>
</ul>
<div class="oe_kanban_footer_left">
<div attrs="{'invisible': [('target', '=', 0)]}">
<div class="oe_center" attrs="{'invisible': [('rep', '=', False)]}">
<field name="total_sale" widget="gauge" style="width:120px; height: 90px; cursor: pointer;"
options="{'max_field': 'target'}">Rep Target</field>
</div>
</div>
<span title='Messages'><span class='oe_e'>9</span><t t-esc="record.message_ids.raw_value.length"/></span>
<span title='Followers'><span class='oe_e'>+</span><t t-esc="record.message_follower_ids.raw_value.length"/></span>
</div>
<div class="oe_followers" groups="base.group_user">
<button t-if="record.message_is_follower.raw_value" name="action_unfollow" type="object" class="oe_follower oe_following">
<span class="oe_unfollow">Unfollow</span>
<span class="oe_following">Following</span>
</button>
<button t-if="! record.message_is_follower.raw_value" name="action_follow" type="object" class="oe_follower oe_notfollow">Follow</button>
</div>
</div>
</div>
</div>
<script>
$('.oe_employee_picture').load(function() { if($(this).width() > $(this).height()) { $(this).addClass('oe_employee_picture_wide') } });
</script>
</t>
</templates>
</kanban>
</field>
</record>
</data>
</openerp>

63
med_marketing/views/rep_view.xml

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--SEARCH[EMPLOYEE]-->
<record id="view_employee_filter" model="ir.ui.view">
<field name="name">Employees</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_filter"/>
<field name="arch" type="xml">
<xpath expr="//group[@string='Group By']" position="before">
<filter name="filter_rep" string="Medical Representative" icon="terp-personal+" domain="[('rep', '=', True)]"/>
<separator/>
</xpath>
</field>
</record>
<!--FORM [EMPLOYEE]-->
<record id="view_employee_form_inherit" model="ir.ui.view">
<field name="name">hr.employee.form.inherit</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//label[@for='name']" position="before">
<h4>
<field name="rep" class="oe_inline"/> <label for="rep" string="Is a Medical Representative?"/>
</h4>
<br/>
</xpath>
<xpath expr="//group[@name='active_group']" position="after">
<group string="Commission" attrs="{'invisible':[('rep','=',False)]}">
<field name="commission" />
</group>
</xpath>
</field>
</record>
<!--ACTION [REP]-->
<record id="action_rep" model="ir.actions.act_window">
<field name="name">Medical Representatives</field>
<field name="res_model">hr.employee</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[]</field>
<field name="context">{"search_default_filter_rep":1, "default_rep":1}</field>
<field name="view_id" eval="False"/>
<field name="search_view_id" ref="hr.view_employee_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a new employee.
</p><p>
With just a quick glance on the Odoo employee screen, you
can easily find all the information you need for each person;
contact data, job position, availability, etc.
</p>
</field>
</record>
<!--MENU [REP]-->
<menuitem action="action_rep"
id="menu_rep"
sequence="4"
parent="med_marketing.menu_marketing"/>
</data>
</openerp>

1
medical_feature/__init__.py

@ -0,0 +1 @@
import pharmacy_mgt,route_manage,expiry_manage

28
medical_feature/__openerp__.py

@ -0,0 +1,28 @@
{
'name': "Pharmacy Management",
'summary': """ Some Basics For Field of Medicine """,
'description': """ """,
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'license': 'AGPL-3',
'category': 'Medicine',
'version': '0.1',
'depends': ["base",
"sale",
"purchase",
"stock",
"mrp",
"mrp_operations",
"product_expiry",
"account_accountant"],
'data': ['views/pharmacy_mgt_view.xml',
'views/medicines_view.xml',
'route_manage/route_manage_view.xml',
'route_manage/report.xml', 'new_names.xml',
'expiry_manage/expiry_manage_view.xml',
],
'demo': ['demo/demo.xml'],
'installable': True,
'auto_install': False,
'application': True,
}

335
medical_feature/demo/demo.xml

@ -0,0 +1,335 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--DEMO LOCATIONS-->
<!--CALICUT-->
<record id="loc_0001" model="pharmacy_management.route.location">
<field name="name">Sm street</field>
</record>
<record id="loc_0002" model="pharmacy_management.route.location">
<field name="name">Manorama Junction</field>
</record>
<record id="loc_0003" model="pharmacy_management.route.location">
<field name="name">East Nadakavu Junction</field>
</record>
<record id="loc_0004" model="pharmacy_management.route.location">
<field name="name">Sarovaram</field>
</record>
<record id="loc_0005" model="pharmacy_management.route.location">
<field name="name">Mavoor Road</field>
</record>
<!--HYDERABAD-->
<record id="loc_0011" model="pharmacy_management.route.location">
<field name="name">Malakunta</field>
</record>
<record id="loc_0012" model="pharmacy_management.route.location">
<field name="name">Gruhkalpa</field>
</record>
<record id="loc_0013" model="pharmacy_management.route.location">
<field name="name">Band colony</field>
</record>
<record id="loc_0014" model="pharmacy_management.route.location">
<field name="name">Sultan Bazaar</field>
</record>
<record id="loc_0015" model="pharmacy_management.route.location">
<field name="name">Esamiya Bazaar</field>
</record>
<!--CHENNAI-->
<record id="loc_0021" model="pharmacy_management.route.location">
<field name="name">Royapettah</field>
</record>
<record id="loc_0022" model="pharmacy_management.route.location">
<field name="name">Teynampet</field>
</record>
<record id="loc_0023" model="pharmacy_management.route.location">
<field name="name">T Nagar</field>
</record>
<record id="loc_0024" model="pharmacy_management.route.location">
<field name="name">Kodambakkam</field>
</record>
<record id="loc_0025" model="pharmacy_management.route.location">
<field name="name">Arumbakkam</field>
</record>
<!--KOLKATHA-->
<record id="loc_0051" model="pharmacy_management.route.location">
<field name="name">Lal Bazaar</field>
</record>
<record id="loc_0052" model="pharmacy_management.route.location">
<field name="name">Bow Bazaar</field>
</record>
<!--DEMO DATA FOR MEDICINE TYPES-->
<!--<record id="medicine_types-dat" model="product.medicine.types">-->
<!--<field name="id">1</field>-->
<!--<field name="medicine_type">Antibiotic</field>-->
<!--</record>-->
<!--<record id="medicine_types-dat1" model="product.medicine.types">-->
<!--<field name="id">2</field>-->
<!--<field name="medicine_type">Pathogen</field>-->
<!--</record>-->
<!--<record id="medicine_types-dat2" model="product.medicine.types">-->
<!--<field name="id">3</field>-->
<!--<field name="medicine_type">Cells</field>-->
<!--</record>-->
<!--DEMO MEDICINES-->
<!--ANTIBIOTICS-->
<!--<record id="medicine1" model="product.product">-->
<!--<field name="name">Daptomycin</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat"/>-->
<!--</record>-->
<!--<record id="medicine2" model="product.product">-->
<!--<field name="name">Linezolid</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat"/>-->
<!--</record>-->
<!--<record id="medicine3" model="product.product">-->
<!--<field name="name">XXXXXXXXXXX0000003</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat"/>-->
<!--</record>-->
<!--&lt;!&ndash;PATHOGENS&ndash;&gt;-->
<!--<record id="medicine4" model="product.product">-->
<!--<field name="name">XXXXXXXXXXX0000004</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat1"/>-->
<!--</record>-->
<!--<record id="medicine5" model="product.product">-->
<!--<field name="name">XXXXXXXXXXX0000005</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat1"/>-->
<!--</record>-->
<!--<record id="medicine6" model="product.product">-->
<!--<field name="name">XXXXXXXXXXX0000006</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat1"/>-->
<!--</record>-->
<!--&lt;!&ndash;CELLS&ndash;&gt;-->
<!--<record id="medicine7" model="product.product">-->
<!--<field name="name">XXXXXXXXXXX0000007</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat2"/>-->
<!--</record>-->
<!--<record id="medicine8" model="product.product">-->
<!--<field name="name">XXXXXXXXXXX0000008</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat2"/>-->
<!--</record>-->
<!--<record id="medicine9" model="product.product">-->
<!--<field name="name">XXXXXXXXXXX0000009</field>-->
<!--<field name="standard_price">10.0</field>-->
<!--<field name="list_price">10.0</field>-->
<!--<field name="medicine_type" ref="medicine_types-dat2"/>-->
<!--</record>-->
<!--DEMO ROUTES-->
<record id="route1" model="pharmacy_management.route">
<field name="name">Kolkata</field>
<field name="route_code">KLT</field>
<field name="distributor" ref="base.user_root"/>
<field name="location_list1" eval="[(6, 0, [ref('loc_0051'), ref('loc_0052')])]"/>
</record>
<record id="route2" model="pharmacy_management.route">
<field name="name">Mumbai</field>
<field name="route_code">MBI</field>
<field name="distributor" ref="base.user_demo"/>
</record>
<record id="route3" model="pharmacy_management.route">
<field name="name">New Delhi</field>
<field name="route_code">DLH</field>
<field name="distributor" ref="base.user_demo"/>
</record>
<record id="route4" model="pharmacy_management.route">
<field name="name">Chennai</field>
<field name="route_code">CHN</field>
<field name="distributor" ref="base.user_root"/>
<field name="location_list1" eval="[(6, 0, [ref('loc_0021'), ref('loc_0022'), ref('loc_0023'),ref('loc_0024'),ref('loc_0025')])]"/>
</record>
<record id="route5" model="pharmacy_management.route">
<field name="name">Hyderabad</field>
<field name="route_code">HBD</field>
<field name="distributor" ref="base.user_root"/>
<field name="location_list1" eval="[(6, 0, [ref('loc_0011'), ref('loc_0012'), ref('loc_0013'),ref('loc_0014'),ref('loc_0015')])]"/>
</record>
<record id="route6" model="pharmacy_management.route">
<field name="name">Calicut</field>
<field name="route_code">CLT</field>
<field name="distributor" ref="base.user_root"/>
<field name="location_list1" eval="[(6, 0, [ref('loc_0001'), ref('loc_0002'), ref('loc_0003'),ref('loc_0004'),ref('loc_0005')])]"/>
</record>
<!--DEMO MEDICINE TYPES-->
<record id="medicine_types_1" model="product.medicine.types">
<field name="id">11</field>
<field name="medicine_type">Eye</field>
</record>
<record id="medicine_types_2" model="product.medicine.types">
<field name="id">12</field>
<field name="medicine_type">Ear, Nose and Oropharynx</field>
</record>
<record id="medicine_types_3" model="product.medicine.types">
<field name="id">13</field>
<field name="medicine_type">Skin</field>
</record>
<record id="medicine_types_4" model="product.medicine.types">
<field name="id">14</field>
<field name="medicine_type">Infections and Infestations</field>
</record>
<record id="medicine_types_5" model="product.medicine.types">
<field name="id">15</field>
<field name="medicine_type">Allergic disorders</field>
</record>
<record id="medicine_types_6" model="product.medicine.types">
<field name="id">16</field>
<field name="medicine_type">Gastrointestinal tract</field>
</record>
<record id="medicine_types_7" model="product.medicine.types">
<field name="id">17</field>
<field name="medicine_type">Nutrition</field>
</record>
<!--DEMO MEDICINES-->
<record id="medicines_001" model="product.product">
<field name="name">Acetylcysteine</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_1"/>
<field name="image" type="base64" file="medical_feature/static/img/Acetylcysteine.jpg"/>
</record>
<record id="medicines_00555" model="product.product">
<field name="name">Carbomer Liquid Eye Gels</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_1"/>
<field name="image" type="base64" file="medical_feature/static/img/Carbomer_liquid_eye_gels.jpg"/>
</record>
<record id="medicines_002" model="product.product">
<field name="name">Azithromycin</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_1"/>
<field name="image" type="base64" file="medical_feature/static/img/Azithromycin.jpg"/>
</record>
<record id="medicines_003" model="product.product">
<field name="name">Amoxicillin</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_2"/>
<field name="image" type="base64" file="medical_feature/static/img/er_amoxicillin-1.jpg"/>
</record>
<record id="medicines_004" model="product.product">
<field name="name">Clarithromycin</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_2"/>
<field name="image" type="base64" file="medical_feature/static/img/re_clarithromycin.jpg"/>
</record>
<record id="medicines_005" model="product.product">
<field name="name">Celiprolol</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_5"/>
<field name="image" type="base64" file="medical_feature/static/img/allr_Celiprolol.jpg"/>
</record>
<record id="medicines_006" model="product.product">
<field name="name">Cetirizine</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_5"/>
<field name="image" type="base64" file="medical_feature/static/img/allr_Cetirizine.jpg"/>
</record>
<record id="medicines_007" model="product.product">
<field name="name">Dimethindene</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_5"/>
<field name="image" type="base64" file="medical_feature/static/img/allr_Dimethindene.jpg"/>
</record>
<record id="medicines_008" model="product.product">
<field name="name">Aciphex</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_6"/>
<field name="image" type="base64" file="medical_feature/static/img/gs_Aciphex.jpg"/>
</record>
<record id="9" model="product.product">
<field name="name">Gastrogafin</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_6"/>
<field name="image" type="base64" file="medical_feature/static/img/gs_gastrogafin.jpg"/>
</record>
<record id="10" model="product.product">
<field name="name">Gleevec</field>
<field name="standard_price">10.0</field>
<field name="list_price">10.0</field>
<field name="medicine_type" ref="medicine_types_6"/>
<field name="image" type="base64" file="medical_feature/static/img/gs_Gleevec.jpg"/>
</record>
<!--DEMO LOTS-->
<record id="lot_0001" model="stock.production.lot">
<field name="name">AE00G5K220001</field>
<field name="product_id" ref="medicines_001"/>
<field name="use_date" eval="time.strftime('%Y-%m') + '-08'"/>
</record>
<record id="lot_0002" model="stock.production.lot">
<field name="name">AE00G5K220002</field>
<field name="product_id" ref="medicines_002"/>
<field name="life_date" eval="time.strftime('%Y-%m') + '-10'"/>
</record>
<record id="lot_0003" model="stock.production.lot">
<field name="name">AE00G5K220003</field>
<field name="product_id" ref="medicines_002"/>
<field name="life_date" eval="time.strftime('%Y-%m') + '-11'"/>
</record>
</data>
</openerp>

1
medical_feature/expiry_manage/__init__.py

@ -0,0 +1 @@
import expiry_manage

52
medical_feature/expiry_manage/expiry_manage.py

@ -0,0 +1,52 @@
from openerp import models, fields, _
from openerp import api
import datetime
from dateutil import parser
class StockTransferDetailsItems(models.TransientModel):
_inherit = 'stock.transfer_details_items'
lot_id = fields.Many2one('stock.production.lot', 'Lot/Serial Number')
@api.onchange('lot_id')
def when_items_changes_(self):
# ALERT DATE [alert_date]
if self.lot_id.alert_date is not False and parser.parse(self.lot_id.alert_date) < datetime.datetime.now():
return {'warning': {'title': _('Warning'), 'message': _('The lot \''+self.lot_id.name+'\' of '+' medicine \''+self.lot_id.product_id.name+'\'\n must not be consumed and should be removed from the stock.')}}
# REMOVAL DATE [removal_date]
if self.lot_id.removal_date is not False and parser.parse(self.lot_id.removal_date) < datetime.datetime.now():
return {'warning': {'title': _('Warning'), 'message': _('The lot \''+self.lot_id.name+'\' of '+' medicine \''+self.lot_id.product_id.name+'\'\n must not be consumed and should be removed from the stock.')}}
# END OF LIFE DATE [life_date]
if self.lot_id.life_date is not False and parser.parse(self.lot_id.life_date) < datetime.datetime.now():
return {'warning': {'title': _('Warning'), 'message': _('The lot \''+self.lot_id.name+'\' of '+' medicine \''+self.lot_id.product_id.name+'\'\n is dangerous and must not be consumed.')}}
# BEST BEFORE DATE [use_date]
if self.lot_id.use_date is not False and parser.parse(self.lot_id.use_date) < datetime.datetime.now():
return {'warning': {'title': _('Warning'), 'message': _('The lot \''+self.lot_id.name+'\' of '+' medicine \''+self.lot_id.product_id.name+'\'\n is not good for use now.')}}
class AddColorSerialNo(models.Model):
_inherit = 'stock.production.lot'
def _get_default_vals(self):
for each_lots in self:
if each_lots.alert_date is not False and parser.parse(each_lots.alert_date) < datetime.datetime.now():
each_lots.state = 'red'
elif each_lots.removal_date is not False and parser.parse(each_lots.removal_date) < datetime.datetime.now():
each_lots.state = 'red'
elif each_lots.life_date is not False and parser.parse(each_lots.life_date) < datetime.datetime.now():
each_lots.state = 'red'
elif each_lots.use_date is not False and parser.parse(each_lots.use_date) < datetime.datetime.now():
each_lots.state = 'lite_red'
else:
each_lots.state = 'normal'
state = fields.Selection([('normal', 'Normal'),
('lite_red', 'Not Good'),
('red', 'To Be Removed')],
string='Status',
compute=lambda self: self._get_default_vals()
# default=lambda self: self._get_default_vals()
)

56
medical_feature/expiry_manage/expiry_manage_view.xml

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--TREE [LOTS]-->
<record id="stock.view_production_lot_tree" model="ir.ui.view">
<field name="name">stock.production.lot.tree</field>
<field name="model">stock.production.lot</field>
<field name="arch" type="xml">
<tree string="Serial Number" colors="red:state=='red';#ff8080:state=='lite_red'">
<field name="name"/>
<field name="ref"/>
<field name="product_id"/>
<field name="create_date"/>
<field name="state"/>
</tree>
</field>
</record>
<!--SEARCH [LOTS]-->
<record model="ir.ui.view" id="search_med_lot_filter">
<field name="name">Production Lots Filter</field>
<field name="model">stock.production.lot</field>
<field name="arch" type="xml">
<search string="Product Lots Filter">
<field name="name" string="Product Lots" filter_domain="['|',('name','ilike',self),('ref','ilike',self)]"/>
<field name="product_id"/>
<group expand="0" string="Group By">
<filter string="Medicines" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
</group>
</search>
</field>
</record>
<!--ACTION [LOTS]-->
<record id="action_med_lot" model="ir.actions.act_window">
<field name="name">Serial Numbers</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.production.lot</field>
<field name="view_type">form</field>
<field name="view_id" ref="stock.view_production_lot_tree"/>
<field name="search_view_id" ref="search_med_lot_filter"/>
<field name="context">{}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a serial number.
</p><p>
This is the list of all the production lots you recorded. When
you select a lot, you can get the traceability of the products contained in lot.
</p>
</field>
</record>
<!--MENU [LOTS]-->
<menuitem action="action_med_lot" id="menu_action_med_lot_form"
parent="medical_feature.menu_med"
sequence="40"
groups="stock.group_production_lot"/>
</data>
</openerp>

170
medical_feature/new_names.xml

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--IN SALES-->
<!--=====================================================-->
<record model="ir.ui.menu" id="base.menu_partner_form">
<field name="name">Retailers</field>
</record>
<record id="base.action_partner_form" model="ir.actions.act_window">
<field name="name">Retailers</field>
</record>
<!--=====================================================-->
<!--QUOTATIONS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="sale.menu_sale_quotations">
<field name="name">Draft Orders</field>
</record>
<record id="sale.action_quotations" model="ir.actions.act_window">
<field name="name">Draft Orders</field>
</record>
<!--=====================================================-->
<!--SALE ORDERS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="sale.menu_sale_order">
<field name="name">Confirmed Orders</field>
</record>
<record id="sale.action_orders" model="ir.actions.act_window">
<field name="name">Confirmed Orders</field>
</record>
<!--=====================================================-->
<!--PRODUCTS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="base.menu_product">
<field name="name">Medicines</field>
</record>
<!--=====================================================-->
<record model="ir.ui.menu" id="product.menu_product_template_action">
<field name="name">Medicines</field>
</record>
<record id="product.product_template_action" model="ir.actions.act_window">
<field name="name">Medicines</field>
</record>
<!--=====================================================-->
<!--PRODUCT VARIANTS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="product.menu_products">
<field name="name">Medicines Variants</field>
</record>
<record id="product.product_normal_action_sell" model="ir.actions.act_window">
<field name="name">Medicines Variants</field>
</record>
<!--=====================================================-->
<!--PRODUCT BY CATEGORY-->
<!--<record model="ir.ui.menu" id="product.menu_products_category">-->
<!--<field name="name">Medicines by Category</field>-->
<!--</record>-->
<!--<record id="product.product_category_action" model="ir.actions.act_window">-->
<!--<field name="name">Medicines by Category</field>-->
<!--</record>-->
<!--=====================================================-->
<!--IN PURCHASE-->
<!--=====================================================-->
<!--REQUESTS FOR QUOTATIONS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="purchase.menu_purchase_rfq">
<field name="name">Draft Orders</field>
</record>
<record id="purchase.purchase_rfq" model="ir.actions.act_window">
<field name="name">Draft Orders</field>
</record>
<!--=====================================================-->
<!--PURCHASE ORDERS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="purchase.menu_purchase_form_action">
<field name="name">Confirmed Orders</field>
</record>
<record id="purchase.purchase_form_action" model="ir.actions.act_window">
<field name="name">Confirmed Orders</field>
</record>
<!--=====================================================-->
<!--SUPPLIERS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="base.menu_procurement_management_supplier_name">
<field name="name">Vendors</field>
</record>
<record id="base.action_partner_supplier_form" model="ir.actions.act_window">
<field name="name">Vendors</field>
</record>
<!--=====================================================-->
<!--PRODUCTS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="purchase.menu_procurement_management_product">
<field name="name">Medicines</field>
</record>
<!--=====================================================-->
<record model="ir.ui.menu" id="purchase.menu_procurement_partner_contact_form">
<field name="name">Medicines</field>
</record>
<record id="purchase.product_normal_action_puchased" model="ir.actions.act_window">
<field name="name">Medicines</field>
</record>
<!--=====================================================-->
<!--PRODUCTS BY CATEGORY-->
<!--=====================================================-->
<!--<record model="ir.ui.menu" id="purchase.menu_product_by_category_purchase_form">-->
<!--<field name="name">Medicines by Category</field>-->
<!--</record>-->
<!--<record id="product.product_category_action" model="ir.actions.act_window">-->
<!--<field name="name">Medicines by Category</field>-->
<!--</record>-->
<!--=====================================================-->
<!--MESSAGING-->
<!--=====================================================-->
<record model="ir.ui.menu" id="mail.mail_feeds_main">
<field name="name">Talks</field>
</record>
<!--WAREHOUSE-->
<!--=====================================================-->
<!--WAREHOUSE [TOP]-->
<!--=====================================================-->
<record model="ir.ui.menu" id="stock.menu_stock_root">
<field name="name"> Stocks </field>
</record>
<!--=====================================================-->
<record model="ir.ui.menu" id="stock.menu_stock_product">
<field name="name">Medicines</field>
</record>
<!--<record model="ir.ui.menu" id="stock.menu_product_by_category_stock_form">-->
<!--<field name="name">Medicines by Category</field>-->
<!--</record>-->
<record model="ir.ui.menu" id="stock.menu_stock_products_menu">
<field name="name">Medicines</field>
</record>
<!--MANUFACTURING-->
<!--=====================================================-->
<!--PRODUCTS-->
<!--=====================================================-->
<record model="ir.ui.menu" id="mrp.menu_mrp_bom">
<field name="name"> Medicines </field>
</record>
<!--=====================================================-->
<record model="ir.ui.menu" id="mrp.menu_mrp_product_form">
<field name="name"> Medicines </field>
</record>
<record id="mrp.product_template_action" model="ir.actions.act_window">
<field name="name">Medicines</field>
</record>
<!--=====================================================-->
<!--=====================================================-->
<!--PRODUCT BY CATEGORY-->
<!--<record model="ir.ui.menu" id="product.menu_products_category">-->
<!--<field name="name">Medicines Hierarchy</field>-->
<!--</record>-->
<!--<record id="product.product_category_action" model="ir.actions.act_window">-->
<!--<field name="name">Medicines Hierarchy</field>-->
<!--</record>-->
<!--=====================================================-->
</data>
</openerp>

32
medical_feature/pharmacy_mgt.py

@ -0,0 +1,32 @@
from openerp import models, fields,api
class Medicines(models.Model):
_inherit = 'product.template'
medicine_category = fields.Selection([('allopathy', 'Allopathy'),
('ayurvedic', 'Ayurvedic'),
('homeo', 'Homeo'),
('generic', 'Generic'),
('none', 'None Medicine'),
('veterinary', 'Veterinary'), ], 'Medicine Type', default='generic')
medicine_type = fields.Many2one('product.medicine.types', 'Medicine Category')
product_of = fields.Many2one('product.medicine.responsible', 'Product Of')
class MedicineTypes(models.Model):
_name = 'product.medicine.types'
_rec_name = 'medicine_type'
medicine_type = fields.Char(string="Medicine Category")
class MedicineResponsible(models.Model):
_name = 'product.medicine.responsible'
_rec_name = 'name_responsible'
name_responsible = fields.Char(string="Product Of ")
related_vendor = fields.Many2one('res.partner', string='Related Vendor', domain="[('supplier', '=','1')]")
place = fields.Char(string="Place")

1
medical_feature/route_manage/__init__.py

@ -0,0 +1 @@
import route_mgt

30
medical_feature/route_manage/report.xml

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--PIVOT VIEW OF REPORT-->
<record id="view_report_sale_order_graph" model="ir.ui.view">
<field name="name">sale.order.route</field>
<field name="model">sale.order</field>
<field name="arch" type="xml">
<graph string="Sale Orders By Route" type="pivot">
<field name="name" type="col"/>
<field name="amount_total" type="measure"/>
<field name="route_of_customer" type="row"/>
</graph>
</field>
</record>
<!--ACTION OF REPORT-->
<record id="action_sale_order_by_route" model="ir.actions.act_window">
<field name="name">Sales Analysis By Routes</field>
<field name="res_model">sale.order</field>
<!--<field name="view_type">form</field>-->
<field name="view_mode">graph</field>
<field name="view_id" ref="view_report_sale_order_graph"/>
</record>
<menuitem action="action_sale_order_by_route"
id="menu_report_by_route"
parent="base.next_id_64"
sequence="10"/>
</data>
</openerp>

237
medical_feature/route_manage/route_manage_view.xml

@ -0,0 +1,237 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--KANBAN VIEW OF ROUTES-->
<record id="medical_feature.view_my_route_kanban" model="ir.ui.view">
<field name="name">pharmacy_management.route.kanban</field>
<field name="model">pharmacy_management.route</field>
<field name="arch" type="xml">
<kanban>
<field name="name"/>
<field name="route_code"/>
<field name="distributor"/>
<field name="customer_list"/>
<field name="count_customers"/>
<!--<field name="location_list"/>-->
<templates>
<t t-name="kanban-box">
<a type="open">
<div style="width: 300px;color: navy; background-color: #E0E0E0; border: 2px solid #4C4C4C; padding: 5px;">
<h4 style="color:#c2c2d6;">
<field name="route_code"/>
</h4>
<h2 style="color:#4C4C4C;">
<field name="name"/>
</h2>
<center>
<div style="color:#000000;">
<field name="distributor"/>
</div>
</center>
<span class="oe_kanban_list_many2many">
<field name="location_list1"/>
</span>
<div align="right" style="color:#7C7BAD;">
<field name="count_customers"/>
<label>Retailers</label>
</div>
</div>
</a>
</t>
</templates>
</kanban>
</field>
</record>
<!--SEARCH VIEW OF ROUTES-->
<record id="medical_feature.view_my_route_filter" model="ir.ui.view">
<field name="name">pharmacy_management.route.select</field>
<field name="model">pharmacy_management.route</field>
<field name="arch" type="xml">
<search>
<filter string="My" name="my_route" domain="[('distributor','=',uid)]"/>
</search>
</field>
</record>
<!--ACTION FOR ROUTES MENU-->
<record id="routes_menu_action" model="ir.actions.act_window">
<field name="name">Routes</field>
<field name="res_model">pharmacy_management.route</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{"search_default_my_route":1}</field>
<field name="search_view_id" ref="view_my_route_filter"/>
</record>
<!-- TREE VIEW FOR ROUTES MENU-->
<record model="ir.ui.view" id="routes_menu_tree_view">
<field name="name">pharmacy_management.route.tree</field>
<field name="model">pharmacy_management.route</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="distributor"/>
</tree>
</field>
</record>
<!-- FORM VIEW FOR ROUTES MENU-->
<record model="ir.ui.view" id="routes_menu_form_view">
<field name="name">pharmacy_management.route.form</field>
<field name="model">pharmacy_management.route</field>
<field name="arch" type="xml">
<form>
<sheet>
<table>
<tr>
<td>
<group>
<field name="name" required="1" string="Route"/>
<field name="route_code" string="Route Code"/>
</group>
<group>
<field name="distributor" required="1" string="Distributor"/>
</group>
</td>
<td>
</td>
</tr>
</table>
<notebook>
<page string="Retailer">
<field name="customer_list" readonly="1">
<tree>
<field name="name"/>
<field name="mobile"/>
<field name="email"/>
</tree>
</field>
</page>
<page string="Locations">
<group col="2">
<div>
<group>
<field name="location_list1" widget="many2many_tags"/>
</group>
</div>
<div>
<button string="All Locations"
name="locations_btn"
icon="fa fa-arrow-right"
class="oe_stat_button"
type="object"/>
</div>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<!--MENU ROUTES-->
<menuitem action="routes_menu_action"
id="distributing_routes"
sequence="1"
parent="medical_feature.menu_med_sale"/>
<!--ADD THE FIELD ROUTE IN CUSTOMER DATA -->
<record id="res_partner_route" model="ir.ui.view">
<field name="name">res.partner.route</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='parent_id']" position="before">
<label for="customer_route" string="Route" attrs="{'invisible': [('customer','=',False)]}"/>
<field name="customer_route"
attrs="{'invisible': [('customer','=',False)]}"
/>
<field name="id_of_route_distributor" attrs="{'invisible': True}"/>
</xpath>
</field>
</record>
<!--ADD THE FIELD ROUTE OF CUSTOMER IN SALE ORDER -->
<record id="sale_order_customer_route" model="ir.ui.view">
<field name="name">sale.order.customer_route</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="after">
<field name="route_of_customer" attrs="{'invisible':True}"/>
<field name="route_of_customer_to_show"/>
</xpath>
</field>
</record>
<!--ACTION TO OVERRIDE THE CUSTOMER MENU-->
<record id="base.action_partner_form" model="ir.actions.act_window">
<field name="name">Retailers</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{"search_default_customer":1 ,"search_default_my_retailers":1}</field>
<field name="search_view_id" ref="base.view_res_partner_filter"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a contact in your address book.
</p><p>
Odoo helps you easily track all activities related to
a customer; discussions, history of business opportunities,
documents, etc.
</p>
</field>
</record>
<!--ADDING 'MY RETAILER' FILTER-->
<record model="ir.ui.view" id="res_partner_search_inherited">
<field name="name">res.partner.serach</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="before">
<filter string="My Retailers" name="my_retailers" domain="[('id_of_route_distributor','=',uid)]"/>
</xpath>
</field>
</record>
<!--Give CONTEXT FOR CUSTOMER IN FORM VIEW OF SALE ORDER-->
<record model="ir.ui.view" id="view_order_form_inherit_latest">
<field name="name">sale.order.form.inherit269</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr='//field[@name="partner_id"]' position='attributes'>
<attribute name="domain">[('customer','=',True), ('id_of_route_distributor','=',uid)]</attribute>
<attribute name="context">{'search_default_customer':1, 'show_address': 1, 'search_default_my_retailers': 1 }</attribute>
</xpath>
</field>
</record>
<!--TREE [LOCATIONS]-->
<record model="ir.ui.view" id="routes_locations_menu_tree_view">
<field name="name">pharmacy_management.route.location.tree</field>
<field name="model">pharmacy_management.route.location</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
</tree>
</field>
</record>
<!--FORM [LOCATIONS]-->
<record model="ir.ui.view" id="routes_locations_menu_form_view">
<field name="name">pharmacy_management.route.location.form</field>
<field name="model">pharmacy_management.route.location</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
</group>
</sheet>
</form>
</field>
</record>
</data>
</openerp>

89
medical_feature/route_manage/route_mgt.py

@ -0,0 +1,89 @@
from openerp import models, fields,_
from openerp import api
# ROUTE
class DistributionRoutes(models.Model):
_name = 'pharmacy_management.route'
name = fields.Char('Route Name')
route_code = fields.Char()
distributor = fields.Many2one('res.users', 'Distributor')
customer_list = fields.One2many('res.partner', 'customer_route')
@api.one
def _get_customer_count(self):
self.count_customers = len(self.customer_list)
count_customers = fields.Integer(compute='_get_customer_count')
# location_list = fields.One2many('pharmacy_management.route.location', 'route_id')
location_list1 = fields.Many2many('pharmacy_management.route.location', 'route_id', string='Locations')
def locations_btn(self, cr, uid, ids, context=None):
return {
'view_type': 'form',
'view_mode': 'tree,form',
'res_model': 'pharmacy_management.route.location',
'view_id': False,
'type': 'ir.actions.act_window',
'name' : _('All Route Locations'),
}
# RETAILERS
class RouteInCustomer(models.Model):
_inherit = 'res.partner'
@api.onchange('customer_route')
def set_id_of_route_distributor(self):
print self.customer_route.distributor.id
self.id_of_route_distributor = self.customer_route.distributor.id
customer_route = fields.Many2one('pharmacy_management.route', 'Route')
id_of_route_distributor = fields.Integer()
# SALE ORDER
class RouteInSaleOrder(models.Model):
_inherit = 'sale.order'
route_of_customer = fields.Many2one('pharmacy_management.route', 'Route of Customer')
def onchange_partner_id(self, cr, uid, ids, part, context=None):
if not part:
return {'value': {'partner_invoice_id': False, 'partner_shipping_id': False, 'payment_term': False, 'fiscal_position': False}}
part = self.pool.get('res.partner').browse(cr, uid, part, context=context)
addr = self.pool.get('res.partner').address_get(cr, uid, [part.id], ['delivery', 'invoice', 'contact'])
pricelist = part.property_product_pricelist and part.property_product_pricelist.id or False
invoice_part = self.pool.get('res.partner').browse(cr, uid, addr['invoice'], context=context)
payment_term = invoice_part.property_payment_term and invoice_part.property_payment_term.id or False
dedicated_salesman = part.user_id and part.user_id.id or uid
val = {
'partner_invoice_id': addr['invoice'],
'partner_shipping_id': addr['delivery'],
'payment_term': payment_term,
'user_id': dedicated_salesman,
}
delivery_onchange = self.onchange_delivery_id(cr, uid, ids, False, part.id, addr['delivery'], False, context=context)
val.update(delivery_onchange['value'])
if pricelist:
val['pricelist_id'] = pricelist
if not self._get_default_section_id(cr, uid, context=context) and part.section_id:
val['section_id'] = part.section_id.id
sale_note = self.get_salenote(cr, uid, ids, part.id, context=context)
if sale_note: val.update({'note': sale_note})
# =================================================
val['route_of_customer'] = part.customer_route.id
# val['user_id'] = part.customer_route.distributor.id
return {'value': val}
def _get_route_of_customer_to_show(self):
self.route_of_customer_to_show = self.partner_id.customer_route.id
route_of_customer_to_show = fields.Many2one('pharmacy_management.route', 'Route of Customer' , compute='_get_route_of_customer_to_show')
class Locations(models.Model):
_name = 'pharmacy_management.route.location'
name = fields.Char('Location Name')
route_id = fields.Many2one('pharmacy_management.route')

BIN
medical_feature/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
medical_feature/static/img/Acetylcysteine.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
medical_feature/static/img/Azithromycin.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
medical_feature/static/img/Carbomer_liquid_eye_gels.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
medical_feature/static/img/allr_Celiprolol.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
medical_feature/static/img/allr_Cetirizine.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

BIN
medical_feature/static/img/allr_Dimethindene.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

BIN
medical_feature/static/img/er_amoxicillin-1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
medical_feature/static/img/gs_Aciphex.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
medical_feature/static/img/gs_Gleevec.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
medical_feature/static/img/gs_gastrogafin.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
medical_feature/static/img/re_clarithromycin.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

28
medical_feature/views/medicines_view.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--====================================================-->
<!-- ACTION [MEDICINES]-->
<record id="action_medicines" model="ir.actions.act_window">
<field name="name">Medicines</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.template</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_type">form</field>
<field name="view_id" ref="product.product_template_kanban_view"/>
<field name="context">{"search_default_filter_to_sell":1, "search_default_medicine_type":1,}</field>
</record>
<!--====================================================-->
<!--MENU [MEDICINES]-->
<menuitem id="menu_med"
name="Medicines"
sequence="30"
parent="medical_feature.menu_med_features"/>
<menuitem id="menu_med_sub"
action="action_medicines"
sequence="30"
parent="medical_feature.menu_med"/>
<!--=====================================================-->
</data>
</openerp>

174
medical_feature/views/pharmacy_mgt_view.xml

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--GROUP [MEDICAL MANAGER]-->
<record model="res.groups" id="medical_feature.group_medical_user">
<field name="name">Medical Features Manager</field>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<!--MAIN MENU [MEDICAL FEATURES]-->
<menuitem id="menu_med_features"
name="Medical Features"
sequence="11"/>
<!--MENU [SALES]-->
<menuitem id="menu_med_sale"
name="Sales"
sequence="20"
parent="medical_feature.menu_med_features"/>
<!--MENU [CONFIGURATION]-->
<menuitem id="menu_med_conf"
name="Configuration"
sequence="100"
parent="medical_feature.menu_med_features"
groups="medical_feature.group_medical_user" />
<!--FORM VIEW MEDICINE TYPES-->
<record model="ir.ui.view" id="form_medicine_types_view">
<field name="name">product.medicine.types.form</field>
<field name="model">product.medicine.types</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="medicine_type" required="1"/>
</group>
</sheet>
</form>
</field>
</record>
<!--TREE VIEW MEDICINE TYPES-->
<record model="ir.ui.view" id="tree_medicine_types_view">
<field name="name">product.medicine.types.tree</field>
<field name="model">product.medicine.types</field>
<field name="arch" type="xml">
<tree>
<field name="medicine_type"/>
</tree>
</field>
</record>
<!--ACTION MEDICINE TYPES-->
<record id="action_medicine_types" model="ir.actions.act_window">
<field name="name">Medicine Categories</field>
<field name="res_model">product.medicine.types</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!--MENU MEDICINE TYPE-->
<menuitem action="action_medicine_types"
id="menu_med_types"
sequence="2"
parent="medical_feature.menu_med_conf"/>
<!--ADD MEDICINE CATEGORY AND RES IN FORM VIEW-->
<record id="product_template_form_view_inherited" model="ir.ui.view">
<field name="name">product.template.form.inherited</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='type']" position="after">
<field name="medicine_category"/>
<field name="medicine_type"/>
</xpath>
<xpath expr="//field[@name='sale_ok']" position="before">
<label for="product_of" string="Product Of"/>
<field name="product_of"/>
</xpath>
</field>
</record>
<!--CUSTOMIZE KANBAN VIEW OF PRODUCTS-->
<record id="product_template_kanban_view_inherited" model="ir.ui.view">
<field name="name">product.template.kanban.inherited</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_kanban_view" />
<field name="arch" type="xml">
<xpath expr="//div[@class='oe_kanban_details']" position="inside">
<font face = 'Tahoma' size = '3' color = 'ff6666'> <field name="product_of"/> </font>
</xpath>
</field>
</record>
<!--ADD FILTER MEDICINE TYPES-->
<record id="product_template_search_view_inherited" model="ir.ui.view">
<field name="name">product.template.form.inherited.new</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_search_view" />
<field name="arch" type="xml">
<xpath expr="//filter[@string='Type']" position="replace">
<filter string='Product Type' icon="terp-stock_symbol-selection" domain="[]" context="{'group_by' : 'type'}"/>
<filter string='Medicine Category' name="medicine_type" domain="[]" context="{'group_by' : 'medicine_type'}"/>
</xpath>
</field>
</record>
<!--OVERRIDING ACTION -->
<record id="product.product_template_action" model="ir.actions.act_window">
<field name="name">Medicines</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.template</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_type">form</field>
<field name="view_id" ref="product.product_template_kanban_view"/>
<field name="context">{"search_default_filter_to_sell":1, "search_default_medicine_type":1,}</field>
</record>
<!--FOR PRODUCT OF -->
<!--FORM VIEW PRODUCT OF-->
<record model="ir.ui.view" id="form_medicine_res_view">
<field name="name">product.medicine.responsible.form</field>
<field name="model">product.medicine.responsible</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name_responsible" required="1"/>
<field name="related_vendor"/>
<field name="place"/>
</group>
</sheet>
</form>
</field>
</record>
<!--TREE VIEW PRODUCT OF-->
<record model="ir.ui.view" id="tree_medicine_res_view">
<field name="name">product.medicine.responsible.tree</field>
<field name="model">product.medicine.responsible</field>
<field name="arch" type="xml">
<tree>
<field name="name_responsible"/>
<field name="related_vendor"/>
<field name="place"/>
</tree>
</field>
</record>
<!--ACTION PRODUCT OF-->
<record id="action_medicine_res" model="ir.actions.act_window">
<field name="name">Medicine Responsible</field>
<field name="res_model">product.medicine.responsible</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!--MENU PRODUCT OF-->
<menuitem action="action_medicine_res"
id="menu_med_res"
sequence="3"
parent="medical_feature.menu_med_conf"/>
<!-- ADD ADMIN TO SERIAL NUMBERS-->
<record id="stock.group_production_lot" model="res.groups">
<field name="name">Manage Lots / Serial Numbers</field>
<field name="category_id" ref="base.module_category_hidden"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<!--MENU RETAILERS-->
<menuitem action="base.action_partner_form"
id="menu_retailers_med"
sequence="1"
parent="medical_feature.menu_med_sale"
name="Retailers"/>
</data>
</openerp>
Loading…
Cancel
Save