| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/vertical-medical |
| GIT | |
| GIT | https://github.com/OCA/vertical-medical.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/vertical-medical/tree/10.0/medical_prescription_sale |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Medical |
| LICENSE | |
| LICENSE | GPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), LasLabs, Odoo Medical Team |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), LasLabs, Odoo Medical Team |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Jordi Ballester, Dave Lasley |
| WEBSITE | |
| WEBSITE | https://laslabs.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:02 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/server-tools: - base_locale_uom_default OCA/vertical-medical: - medical_prescription - medical - medical_medicament - medical_medication - medical_disease - medical_pharmacy odoo/odoo: - sale_stock - sale - sales_team - base - base_setup - web_kanban - web - bus - web_tour - account - product - decimal_precision - report - analytic - web_planner - procurement - stock_account - stock - barcodes - sale_crm - crm - base_action_rule - resource - calendar - web_calendar - fetchmail - utm - web_kanban_gauge |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
crm_case_form_view_oppor |
crm.lead.form | crm.lead | xpath | Inherits crm.crm_case_form_view_oppor |
medical_prescription_order_line_form_view |
Prescription Order Line | medical.prescription.order.line | xpath | Inherits medical_prescription.medical_prescription_order_line_form_view |
medical_prescription_order_line_search_view |
Prescription Order Line Search | medical.prescription.order.line | xpath | Inherits medical_prescription.medical_prescription_order_line_search_view |
medical_prescription_order_line_tree_view |
Prescription Order Lines | medical.prescription.order.line | xpath | Inherits medical_prescription.medical_prescription_order_line_tree_view |
medical_rx_sale_wizard_view_form |
medical.rx.sale.wizard.view.form | rx.sale.wizard | form | New |
medical_sale_wizard_view_form |
medical.sale.wizard.view.form | medical.sale.wizard | form | New |
view_order_form |
sale.order.form | sale.order | xpath | Inherits sale.view_order_form |
is_prescription
Boolean
compute='_compute_prescription_order_and_patient_ids'
default=False
readonly=True
patient_ids
Many2many → medical.patient
comodel_name='medical.patient'
compute='_compute_prescription_order_and_patient_ids'
readonly=True
string='Patients'
pharmacy_id
Many2one → medical.pharmacy
comodel_name='medical.pharmacy'
string='Pharmacy'
prescription_order_ids
Many2many → medical.prescription.order
comodel_name='medical.prescription.order'
compute='_compute_prescription_order_and_patient_ids'
readonly=True
string='Prescriptions'
prescription_order_line_ids
Many2many → medical.prescription.order.line
comodel_name='medical.prescription.order.line'
string='Prescription Lines'
No public methods.
is_prescription
Boolean
default=_compute_default_is_prescription
readonly=True
makeOrder(self)
is_controlled
Boolean
help='Check this if the medicament is a controlled substance'
string='Controlled Substance'
is_prescription
Boolean
help='Check this if a prescription is required for this medicament'
string='Prescription Required'
No public methods.
receive_date
Datetime
default=fields.Datetime.now
help='When the Rx was received'
string='Receipt Date'
receive_method
Selection
default='fax'
help='How the Rx was received'
string='Receipt Method'
args: [('online', 'E-Prescription'), ('phone', 'Phoned In'), ('fax', 'Fax'), ('mail', 'Physical Mail'), ('transfer', 'Transferred In')]
verify_method
Selection
default='none'
help='Method of Rx verification'
args: [('none', 'Not Verified'), ('doctor_phone', 'Called Doctor')]
No public methods.
can_dispense
Boolean
compute='_compute_can_dispense_and_qty'
default=False
help='Can this prescription be dispensed?'
readonly=True
can_dispense_qty
Float
compute='_compute_can_dispense_and_qty'
default=0.0
help='Amount that can be dispensed (using medicine dosage)'
cancelled_dispense_qty
Float
compute='_compute_dispensings_and_orders'
default=0.0
help='Dispense qty cancelled (using medicine dosage)'
readounly=True
dispensed_ids
One2many → procurement.order
compute='_compute_dispensings_and_orders'
readonly=True
args: 'procurement.order'
dispensed_qty
Float
compute='_compute_dispensings_and_orders'
default=0.0
help='Amount already dispensed (using medicine dosage)'
readonly=True
exception_dispense_qty
Float
compute='_compute_dispensings_and_orders'
default=0.0
help='Qty of dispense exceptions (using medicine dosage)'
readounly=True
pending_dispense_qty
Float
compute='_compute_dispensings_and_orders'
default=0.0
help='Amount pending dispense (using medicine dosage)'
readounly=True
receive_date
Datetime
default=fields.Datetime.now
help='When the Rx was received'
string='Receipt Date'
receive_method
Selection
default='fax'
help='How the Rx was received'
string='Receipt Method'
args: [('online', 'E-Prescription'), ('phone', 'Phoned In'), ('fax', 'Fax'), ('mail', 'Physical Mail'), ('transfer', 'Transferred In')]
sale_order_ids
Many2many → sale.order
comodel_name='sale.order'
compute='_compute_dispensings_and_orders'
readonly=True
sale_order_line_ids
One2many → sale.order.line
comodel_name='sale.order.line'
inverse_name='prescription_order_line_id'
readonly=True
verify_method
Selection
default='none'
help='Method of Rx verification'
args: [('none', 'Not Verified'), ('doctor_phone', 'Called Doctor')]
No public methods.
order_id
Many2one → medical.sale.wizard
comodel_name='medical.sale.wizard'
readonly=True
required=True
string='Order'
prescription_order_line_id
Many2one → medical.prescription.order.line
comodel_name='medical.prescription.order.line'
string='Prescription Line'
price_subtotal
Float
compute='_compute_all_amounts'
digits_compute=dp.get_precision('Account')
required=True
price_unit
Float
digits_compute=dp.get_precision('Product Price')
required=True
args: 'Unit Price'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
product_uom
Many2one → product.uom
comodel_name='product.uom'
string='Unit of Measure'
product_uom_qty
Float
digits_compute=dp.get_precision('Product UoM')
required=True
args: 'Quantity'
sequence
Integer
No public methods.
amount_untaxed
Float
compute='_compute_all_amounts'
digits_compute=dp.get_precision('Account')
client_order_ref
Char
string='Order Reference'
company_id
Many2one → res.company
comodel_name='res.company'
required=True
string='Company'
currency_id
Many2one → res.currency
comodel_name='res.currency'
string='Currency'
date_order
Date
string='Order Date'
fiscal_position
Many2one → account.fiscal.position
comodel_name='account.fiscal.position'
string='Fiscal Position'
line_cnt
Integer
compute='_compute_line_cnt'
string='Order Line Count'
note
Text
order_line
One2many → medical.sale.line.wizard
comodel_name='medical.sale.line.wizard'
inverse_name='order_id'
required=True
string='Order Lines'
origin
Char
partner_id
Many2one → res.partner
comodel_name='res.partner'
required=True
string='Customer'
partner_invoice_id
Many2one → res.partner
comodel_name='res.partner'
string='Invoice Partner'
partner_shipping_id
Many2one → res.partner
comodel_name='res.partner'
string='Ship To'
patient_id
Many2one → medical.patient
comodel_name='medical.patient'
help='Patient (used for defaults when creating sale lines)'
required=True
string='Patient'
payment_term
Many2one → account.payment.term
comodel_name='account.payment.term'
string='Payment Term'
pharmacy_id
Many2one → medical.pharmacy
comodel_name='medical.pharmacy'
required=True
string='Pharmacy'
prescription_order_id
Many2one → medical.prescription.order
comodel_name='medical.prescription.order'
readonly=True
required=True
string='Prescription'
prescription_wizard_id
Many2one → medical.rx.sale.wizard
comodel_name='medical.rx.sale.wizard'
default=_compute_default_session
inverse_name='sale_wizard_ids'
readonly=True
pricelist_id
Many2one → product.pricelist
comodel_name='product.pricelist'
required=True
string='Pricelist'
project_id
Many2one → account.analytic.account
comodel_name='account.analytic.account'
string='Project'
section_id
Many2one → crm.case.section
comodel_name='crm.case.section'
string='Sales Team'
state
Selection
default='new'
readonly=True
args: [('new', _('Not Started')), ('start', _('Started')), ('done', _('Completed'))]
user_id
Many2one → res.users
comodel_name='res.users'
readonly=True
required=True
string='Salesperson'
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
next_wizard(self)
date_order
Datetime
default=fields.Datetime.now
help=_('Date for the new orders')
required=True
pharmacy_id
Many2one → medical.pharmacy
comodel_name='medical.pharmacy'
help=_('Pharmacy to dispense orders from')
required=True
string='Pharmacy'
prescription_line_ids
Many2many → medical.prescription.order.line
comodel_name='medical.prescription.order.line'
default=_compute_default_session
readonly=True
required=True
string='Prescription'
sale_wizard_ids
One2many → medical.sale.wizard
comodel_name='medical.sale.wizard'
help=_('Orders to create when wizard is completed')
inverse_name='prescription_wizard_id'
string='Orders'
split_orders
Selection
default='patient'
help=_('How to split the new orders')
required=True
args: [('partner', 'By Customer'), ('patient', 'By Patient'), ('all', 'By Rx Line')]
state
Selection
default='new'
readonly=True
args: [('new', _('Not Started')), ('start', _('Started')), ('partial', _('Open')), ('done', _('Completed'))]
warehouse_id
Many2one → stock.warehouse
comodel_name='stock.warehouse'
required=True
string='Warehouse'
create_sale_wizards(self)
do_rx_sale_conversions(self)
next_wizard(self)
patient_ids
Many2many → medical.patient
comodel_name='medical.patient'
compute='_compute_patient_ids'
readonly=True
string='Patients'
pharmacy_id
Many2one → medical.pharmacy
comodel_name='medical.pharmacy'
string='Pharmacy'
prescription_order_ids
Many2many → medical.prescription.order
comodel_name='medical.prescription.order'
compute='_compute_prescription_order_ids'
readonly=True
string='Prescriptions'
prescription_order_line_ids
Many2many → medical.prescription.order.line
comodel_name='medical.prescription.order.line'
compute='_compute_prescription_order_ids'
readonly=True
string='Prescription Lines'
No public methods.
dispense_qty
Float
compute='_compute_dispense_qty'
default=0.0
readonly=True
medication_id
Many2one → medical.patient.medication
comodel_name='medical.patient.medication'
related='prescription_order_line_id.medical_medication_id'
string='Medication'
patient_id
Many2one → medical.patient
comodel_name='medical.patient'
related='prescription_order_line_id.patient_id'
string='Patient'
prescription_order_line_id
Many2one → medical.prescription.order.line
comodel_name='medical.prescription.order.line'
string='Prescription Line'
No public methods.