Initial commit: Odoomates Odoo packages (12 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:49:21 +02:00
commit 3b38c49bf0
526 changed files with 34983 additions and 0 deletions

View file

@ -0,0 +1,49 @@
# Odoo 16 Development Tutorials
Odoo 16 Development Tutorials
## Installation
```bash
pip install odoo-bringout-odoomates-om_hospital
```
## Dependencies
This addon depends on:
- sale
- mail
- website_slides
- hr
## Manifest Information
- **Name**: Odoo 16 Development Tutorials
- **Version**: 2.0.0
- **Category**: Tutorials
- **License**: AGPL-3
- **Installable**: True
## Source
Custom addon from bringout-odoomates vendor, addon `om_hospital`.
## License
This package maintains the original AGPL-3 license from the addon.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Om_hospital Module - om_hospital
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for om_hospital. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,8 @@
# Dependencies
This addon depends on:
- [sale](../../odoo-bringout-oca-ocb-sale)
- [mail](../../odoo-bringout-oca-ocb-mail)
- [website_slides](../../odoo-bringout-oca-ocb-website_slides)
- [hr](../../odoo-bringout-oca-ocb-hr)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon om_hospital or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-odoomates-om_hospital"
# or
uv pip install odoo-bringout-odoomates-om_hospital"
```

View file

@ -0,0 +1,16 @@
# Models
Detected core models and extensions in om_hospital.
```mermaid
classDiagram
class appointment_prescription_lines
class hospital_appointment
class hospital_doctor
class hospital_patient
class sale_order
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: om_hospital. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon om_hospital
- License: LGPL-3

View file

@ -0,0 +1,31 @@
# Reports
Report definitions and templates in om_hospital.
```mermaid
classDiagram
class PatientCardXlsx
AbstractModel <|-- PatientCardXlsx
```
## Available Reports
### PDF/Document Reports
- **Patient Details** (PDF/Print)
- **Patient Card** (PDF/Print)
- **Patient Card Excel** (PDF/Print)
## Report Files
- **__init__.py** (Python logic)
- **patient_card_xls.py** (Python logic)
- **patient_card.xml** (XML template/definition)
- **patient_details_template.xml** (XML template/definition)
- **report.xml** (XML template/definition)
## Notes
- Named reports above are accessible through Odoo's reporting menu
- Python files define report logic and data processing
- XML files contain report templates, definitions, and formatting
- Reports are integrated with Odoo's printing and email systems

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in om_hospital.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../om_hospital/security/ir.model.access.csv)**
- 6 model access rules
## Record Rules
Row-level security rules defined in:
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../om_hospital/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon om_hospital
```

View file

@ -0,0 +1,9 @@
# Wizards
Transient models exposed as UI wizards in om_hospital.
```mermaid
classDiagram
class CreateAppointmentWizard
class SearchAppointmentWizard
```

View file

@ -0,0 +1,6 @@
from . import wizard
from . import models
from . import report

View file

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
{
'name': 'Odoo 16 Development Tutorials',
'version': '2.0.0',
'summary': 'Odoo 16 Development Tutorials',
'sequence': -100,
'description': """Odoo 16 Development Tutorials""",
'category': 'Tutorials',
'author': 'Odoo Mates',
'maintainer': 'Odoo Mates',
'website': 'https://www.odoomates.tech',
'license': 'AGPL-3',
'depends': [
'sale',
'mail',
'website_slides',
'hr',
],
'data': [
'security/ir.model.access.csv',
'data/data.xml',
# 'data/slide_data_v12.xml',
# 'data/slide_data_v13.xml',
# 'data/slide_data_v14.xml',
# 'data/slide_data_v15.xml',
'wizard/create_appointment_view.xml',
'wizard/search_appointment_view.xml',
'views/patient_view.xml',
'views/doctor_view.xml',
'views/appointment_view.xml',
'views/kids_view.xml',
'views/patient_gender_view.xml',
'views/sale.xml',
'report/patient_details_template.xml',
'report/patient_card.xml',
'report/report.xml'
],
'demo': [],
'live_test_url': 'https://www.youtube.com/watch?v=IeJFxmCG2Qs&list=PLqRRLx0cl0hpu9zH6o8gq6ORBoW5xMtA-&index=3',
'images': ['static/description/banner.gif'],
'installable': True,
'application': True,
'auto_install': False,
}

View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Sequences for hospital.patient -->
<record id="seq_hopital_patient" model="ir.sequence">
<field name="name">Patient Sequence</field>
<field name="code">hospital.patient</field>
<field name="prefix">HP</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<record id="seq_hopital_appointment" model="ir.sequence">
<field name="name">Appointment Sequence</field>
<field name="code">hospital.appointment</field>
<field name="prefix">OT</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
</data>
</odoo>

View file

@ -0,0 +1,774 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="slide_odoo_12_development" model="slide.channel">
<field name="name">Odoo 12 Development</field>
<field name="user_id" ref="base.user_admin"/>
<field name="enroll">public</field>
<field name="channel_type">training</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">latest</field>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="om_hospital/static/src/img/odoo12_development.png"/>
<field name="description">Learn How to Customize the Odoo ERP and Create New Modules.</field>
<field name="create_date" eval="DateTime.now() - relativedelta(days=7)"/>
</record>
<record id="slide_slide_odoo_12_development_1" model="slide.slide">
<field name="name">Configure Odoo With Pycharm</field>
<field name="sequence">1</field>
<field name="url">https://www.youtube.com/watch?v=p7SJW36lqVE</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to configure odoo development environment using pycharm IDE</field>
</record>
<record id="slide_slide_odoo_12_development_2" model="slide.slide">
<field name="name">Add Custom Modules And Custom Addons Path</field>
<field name="sequence">2</field>
<field name="url">https://www.youtube.com/watch?v=DJyPx5u6sd0</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_3" model="slide.slide">
<field name="name">Create Custom Module</field>
<field name="sequence">3</field>
<field name="url">https://www.youtube.com/watch?v=BDepk0LhVuI</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_4" model="slide.slide">
<field name="name">Create New Models</field>
<field name="sequence">4</field>
<field name="url">https://www.youtube.com/watch?v=L6MxDR71_1k</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_5" model="slide.slide">
<field name="name">Define New Menu and Actions</field>
<field name="sequence">5</field>
<field name="url">https://www.youtube.com/watch?v=Tdg4YQowXyI</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_6" model="slide.slide">
<field name="name">Define Tree and Form View</field>
<field name="sequence">6</field>
<field name="url">https://www.youtube.com/watch?v=3JMEroi4DIk</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_7" model="slide.slide">
<field name="name">Set Access Rights For Models</field>
<field name="sequence">7</field>
<field name="url">https://www.youtube.com/watch?v=W5ya521uTlo</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_8" model="slide.slide">
<field name="name">Rec name for Models</field>
<field name="sequence">8</field>
<field name="url">https://www.youtube.com/watch?v=d_cyPsVc7vg</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_9" model="slide.slide">
<field name="name">Add Chatter to Form View</field>
<field name="sequence">9</field>
<field name="url">https://www.youtube.com/watch?v=5rI00Y1Gw7Y</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_10" model="slide.slide">
<field name="name">Add New Sequence</field>
<field name="sequence">10</field>
<field name="url">https://www.youtube.com/watch?v=ZfKzmfiqeg0</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_11" model="slide.slide">
<field name="name">Inherit And Add Field to Existing Views</field>
<field name="sequence">11</field>
<field name="url">https://www.youtube.com/watch?v=z1Tx7EGkPy0</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_12" model="slide.slide">
<field name="name">Define Search View</field>
<field name="sequence">12</field>
<field name="url">https://www.youtube.com/watch?v=hKigPT7GF7E</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_13" model="slide.slide">
<field name="name">Compute Field and its Function</field>
<field name="sequence">13</field>
<field name="url">https://www.youtube.com/watch?v=Mg80GxrKDOc</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_14" model="slide.slide">
<field name="name">Track Field Value Changes</field>
<field name="sequence">14</field>
<field name="url">https://www.youtube.com/watch?v=7lFvNCIZzkg</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_15" model="slide.slide">
<field name="name">Set Default Filter For View</field>
<field name="sequence">15</field>
<field name="url">https://www.youtube.com/watch?v=Q1i0vFXxGOE</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_16" model="slide.slide">
<field name="name">How to Add Chatter to Form View in Odoo12</field>
<field name="sequence">16</field>
<field name="url">https://www.youtube.com/watch?v=5rI00Y1Gw7Y</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_17" model="slide.slide">
<field name="name">Add Constrains For A Field</field>
<field name="sequence">17</field>
<field name="url">https://www.youtube.com/watch?v=ijS-N1CdiWU</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_18" model="slide.slide">
<field name="name">Odoo Module Structure</field>
<field name="sequence">18</field>
<field name="url">https://www.youtube.com/watch?v=EAbhAjAI2hA</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_19" model="slide.slide">
<field name="name">Related Fields</field>
<field name="sequence">19</field>
<field name="url">https://www.youtube.com/watch?v=pD6byjEvIx8</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_20" model="slide.slide">
<field name="name">Set Order Of Records </field>
<field name="sequence">20</field>
<field name="url">https://www.youtube.com/watch?v=zZRxO23NLDo</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_21" model="slide.slide">
<field name="name">Set Default Value For The Field</field>
<field name="sequence">21</field>
<field name="url">https://www.youtube.com/watch?v=fL_Jv1vmSSM</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_22" model="slide.slide">
<field name="name">Add Smart Buttons(type object)</field>
<field name="sequence">22</field>
<field name="url">https://www.youtube.com/watch?v=I93Lr-bprIc</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_23" model="slide.slide">
<field name="name">Smart Button(type action)</field>
<field name="sequence">23</field>
<field name="url">https://www.youtube.com/watch?v=NfYt028J8rA</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_24" model="slide.slide">
<field name="name">Add States/Statusbar for Records</field>
<field name="sequence">24</field>
<field name="url">https://www.youtube.com/watch?v=lPHWsw3Iclk</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_25" model="slide.slide">
<field name="name">Control States and Statusbar Using Buttons - Workflow</field>
<field name="sequence">25</field>
<field name="url">https://www.youtube.com/watch?v=3PA7XAky8mA</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_26" model="slide.slide">
<field name="name">Create PDF Report - Part 1</field>
<field name="sequence">26</field>
<field name="url">https://www.youtube.com/watch?v=SkKAXURqNfQ</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_27" model="slide.slide">
<field name="name">Create PDF Report - Part 2</field>
<field name="sequence">27</field>
<field name="url">https://www.youtube.com/watch?v=qAv5GAmIryI</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_28" model="slide.slide">
<field name="name">Add Notebooks And Pages in Odoo Form View</field>
<field name="sequence">28</field>
<field name="url">https://www.youtube.com/watch?v=gT96GevMEWU</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_29" model="slide.slide">
<field name="name">Override Create Function</field>
<field name="sequence">29</field>
<field name="url">https://www.youtube.com/watch?v=AS08H3G9x1U</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_9" model="slide.slide">
<field name="name">Difference Between Demo and Data File</field>
<field name="sequence">31</field>
<field name="url">https://www.youtube.com/watch?v=pguBgOA9vtM</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_32" model="slide.slide">
<field name="name">Remove Report From Print Menu in Odoo</field>
<field name="sequence">32</field>
<field name="url">https://www.youtube.com/watch?v=ktDKoq9bvaI</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_33" model="slide.slide">
<field name="name">Create Data Files and Load Default Data</field>
<field name="sequence">33</field>
<field name="url">https://www.youtube.com/watch?v=ZyABTIDll0U</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_34" model="slide.slide">
<field name="name">Button Types in Odoo</field>
<field name="sequence">34</field>
<field name="url">https://www.youtube.com/watch?v=_aCRtK0xOpQ</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_35" model="slide.slide">
<field name="name">Add Archive Button In Odoo</field>
<field name="sequence">35</field>
<field name="url">https://www.youtube.com/watch?v=JuEZgM_q1LI</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_36" model="slide.slide">
<field name="name">Record Rules</field>
<field name="sequence">36</field>
<field name="url">https://www.youtube.com/watch?v=p8gj1dEfYUM</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_37" model="slide.slide">
<field name="name">Add One2many Fields</field>
<field name="sequence">37</field>
<field name="url">https://www.youtube.com/watch?v=_O_tNBdg3HQ</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_38" model="slide.slide">
<field name="name">Remove Create and Edit Option From Many2one Field</field>
<field name="sequence">38</field>
<field name="url">https://www.youtube.com/watch?v=AEc2C3WZc54</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_39" model="slide.slide">
<field name="name">Create a Wizard and Call it in Button Click</field>
<field name="sequence">39</field>
<field name="url">https://www.youtube.com/watch?v=K60oF3-vaxA</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_40" model="slide.slide">
<field name="name">Call Wizard From Menu Item Odoo</field>
<field name="sequence">40</field>
<field name="url">https://www.youtube.com/watch?v=qpkVKy9JzEw</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_41" model="slide.slide">
<field name="name">Set Default Value Using Context</field>
<field name="sequence">41</field>
<field name="url">https://www.youtube.com/watch?v=XEs_01mDsCw</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_42" model="slide.slide">
<field name="name">Onchange Functions</field>
<field name="sequence">42</field>
<field name="url">https://www.youtube.com/watch?v=qyRhjyp1MeE</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_43" model="slide.slide">
<field name="name">Create Record From Code</field>
<field name="sequence">43</field>
<field name="url">https://www.youtube.com/watch?v=Jssb15ADeyg</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_44" model="slide.slide">
<field name="name">Name Get Function</field>
<field name="sequence">44</field>
<field name="url">https://www.youtube.com/watch?v=-1r3WSwtqxQ</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_45" model="slide.slide">
<field name="name">Add New Action to Action Button</field>
<field name="sequence">45</field>
<field name="url">https://www.youtube.com/watch?v=yGKYPtAeP7k</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_46" model="slide.slide">
<field name="name">Create Email Template</field>
<field name="sequence">46</field>
<field name="url">https://www.youtube.com/watch?v=rGfGHRS3iWw</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_47" model="slide.slide">
<field name="name">Send Email From Code Using Email Template</field>
<field name="sequence">47</field>
<field name="url">https://www.youtube.com/watch?v=CZVRmtv6re0</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_49" model="slide.slide">
<field name="name">Create Excel/XLS Report</field>
<field name="sequence">49</field>
<field name="url">https://www.youtube.com/watch?v=cCyMy2kxxZs</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_51" model="slide.slide">
<field name="name">Message Post Function</field>
<field name="sequence">51</field>
<field name="url">https://www.youtube.com/watch?v=J3MvgwHnR0A</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_52" model="slide.slide">
<field name="name">Get Data From Database Tables</field>
<field name="sequence">52</field>
<field name="url">https://www.youtube.com/watch?v=hUPSvL8GTQE</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_53" model="slide.slide">
<field name="name">Override Write Function</field>
<field name="sequence">53</field>
<field name="url">https://www.youtube.com/watch?v=v8sXFUi1SH4</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_54" model="slide.slide">
<field name="name">Add Barcode To Report</field>
<field name="sequence">54</field>
<field name="url">https://www.youtube.com/watch?v=bwT_ZtKWn9E</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_55" model="slide.slide">
<field name="name">Create Scheduled Actions</field>
<field name="sequence">55</field>
<field name="url">https://www.youtube.com/watch?v=_P_AVSNr6uU</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_56" model="slide.slide">
<field name="name">Security in Odoo - Access Control, Record Rules and Group</field>
<field name="sequence">56</field>
<field name="url">https://www.youtube.com/watch?v=mzg3EGD_6Gw</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_57" model="slide.slide">
<field name="name">Show Field Only In Developer Mode</field>
<field name="sequence">57</field>
<field name="url">https://www.youtube.com/watch?v=ibxbMDWMtBk</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_58" model="slide.slide">
<field name="name">Upgrade Module From Terminal</field>
<field name="sequence">58</field>
<field name="url">https://www.youtube.com/watch?v=ErzOia_A21w</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_59" model="slide.slide">
<field name="name">Record Data To Backend Models From Website Form</field>
<field name="sequence">59</field>
<field name="url">https://www.youtube.com/watch?v=8uYxWRlxL_U</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_60" model="slide.slide">
<field name="name">Inherit And Modify Existing PDF Reports</field>
<field name="sequence">60</field>
<field name="url">https://www.youtube.com/watch?v=l2tvrpfOR1E</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_62" model="slide.slide">
<field name="name">Delete One2many Lines From Code </field>
<field name="sequence">62</field>
<field name="url">https://www.youtube.com/watch?v=2pOIxhE_xuY</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_63" model="slide.slide">
<field name="name">Migrate Odoo Modules To Another Version</field>
<field name="sequence">63</field>
<field name="url">https://www.youtube.com/watch?v=IH9bQKrVLrU</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_64" model="slide.slide">
<field name="name">Call A Python Function While Printing PDF Report</field>
<field name="sequence">64</field>
<field name="url">https://www.youtube.com/watch?v=JGWc1KjyIBk</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_67" model="slide.slide">
<field name="name">Give Domain For A Field Based On Another Field</field>
<field name="sequence">67</field>
<field name="url">https://www.youtube.com/watch?v=IpXXYCsK2ow</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_68" model="slide.slide">
<field name="name">Convert Datetime To Users TimeZone</field>
<field name="sequence">68</field>
<field name="url">https://www.youtube.com/watch?v=ZxrDGTEU7B8</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_71" model="slide.slide">
<field name="name">Delete Record From Code</field>
<field name="sequence">71</field>
<field name="url">https://www.youtube.com/watch?v=Ra4t9qzj9h4</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_72" model="slide.slide">
<field name="name">Default Get Function: Set Default Values For Fields</field>
<field name="sequence">72</field>
<field name="url">https://www.youtube.com/watch?v=14mc1fIbVuU</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_76" model="slide.slide">
<field name="name">How to Write Controllers And Render WebPage</field>
<field name="sequence">76</field>
<field name="url">https://www.youtube.com/watch?v=udqdjmUN_2c</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_77" model="slide.slide">
<field name="name">Write Controllers And Render WebPage Using Controllers</field>
<field name="sequence">77</field>
<field name="url">https://www.youtube.com/watch?v=1zy4kswo6gY</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_80" model="slide.slide">
<field name="name">Add Settings/Configuration For Module</field>
<field name="sequence">80</field>
<field name="url">https://www.youtube.com/watch?v=MsVoYPQ4-J4</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_12_development_81" model="slide.slide">
<field name="name">Mobile App Development - Authentication, Fetching Data and Creating Records Using Controller</field>
<field name="sequence">81</field>
<field name="url">https://www.youtube.com/watch?v=wGvuRbCyytk</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_12_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="slide_odoo_13_development" model="slide.channel">
<field name="name">Odoo 13 Developement</field>
<field name="user_id" ref="base.user_admin"/>
<field name="enroll">public</field>
<field name="channel_type">training</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">latest</field>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="om_hospital/static/src/img/odoo13_development.png"/>
<field name="description">Learn How to Customize the Odoo ERP and Create New Modules.</field>
<field name="create_date" eval="DateTime.now() - relativedelta(days=7)"/>
</record>
<record id="slide_slide_odoo_13_development_1" model="slide.slide">
<field name="name">How To Configure Odoo With Pycharm</field>
<field name="sequence">1</field>
<field name="url">https://www.youtube.com/watch?v=p7SJW36lqVE</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to configure odoo development environment using pycharm IDE</field>
</record>
<record id="slide_slide_odoo_13_development_2" model="slide.slide">
<field name="name">How To Create A New Module in Odoo13</field>
<field name="sequence">2</field>
<field name="url">https://www.youtube.com/watch?v=0PDqeUG3azo</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to create a module from scratch in Odoo 13</field>
</record>
<record id="slide_slide_odoo_13_development_3" model="slide.slide">
<field name="name">How To Add SearchPanel in Odoo13</field>
<field name="sequence">3</field>
<field name="url">https://www.youtube.com/watch?v=SO9MuESqB6c</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to add search view in odoo13</field>
</record>
<record id="slide_slide_odoo_13_development_4" model="slide.slide">
<field name="name">How To Add Archive Unarchive Option in Odoo13</field>
<field name="sequence">4</field>
<field name="url">https://www.youtube.com/watch?v=pHkAZu9BMPQ</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to archive/unarchive button</field>
</record>
<record id="slide_slide_odoo_13_development_5" model="slide.slide">
<field name="name">Configure Odoo Template in Pycharm And Save Development Time</field>
<field name="sequence">5</field>
<field name="url">https://www.youtube.com/watch?v=1f6QOvf_8lc</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to configure odoo pycharm template</field>
</record>
<record id="slide_slide_odoo_13_development_6" model="slide.slide">
<field name="name">How To Make Dynamic Tree View in Odoo13</field>
<field name="sequence">6</field>
<field name="url">https://www.youtube.com/watch?v=UfWNwupq2CE</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to create dynamic tree view</field>
</record>
<record id="slide_slide_odoo_13_development_7" model="slide.slide">
<field name="name">How To Make Dynamic Tree View in Odoo13</field>
<field name="sequence">7</field>
<field name="url">https://www.youtube.com/watch?v=Ex94lsvgO8w</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">How To Preview Videos In Odoo13 Form View Using New Widget</field>
</record>
<record id="slide_slide_odoo_13_development_8" model="slide.slide">
<field name="name">How To Use Daterange Widget in Odoo13 to Select Multiple Dates</field>
<field name="sequence">8</field>
<field name="url">https://www.youtube.com/watch?v=vZOLRvecws0</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">How To Use Daterange Widget in Odoo13 to Select Multiple Dates</field>
</record>
<record id="slide_slide_odoo_13_development_8" model="slide.slide">
<field name="name">How To Use Daterange Widget in Odoo13 to Select Multiple Dates</field>
<field name="sequence">8</field>
<field name="url">https://www.youtube.com/watch?v=vZOLRvecws0</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">How To Use Daterange Widget in Odoo13 to Select Multiple Dates</field>
</record>
<record id="slide_slide_odoo_13_development_9" model="slide.slide">
<field name="name">How To Debug Odoo Using Pycharm Debugger</field>
<field name="sequence">9</field>
<field name="url">https://www.youtube.com/watch?v=r4VWfuD0rDA</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_13_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">How To Debug Odoo Using Pycharm Debugger</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="slide_odoo_14_development" model="slide.channel">
<field name="name">Odoo 14 Developement</field>
<field name="user_id" ref="base.user_admin"/>
<field name="enroll">public</field>
<field name="channel_type">training</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">latest</field>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="om_hospital/static/src/img/odoo14_development.png"/>
<field name="description">Learn How to Customize the Odoo ERP and Create New Modules.</field>
<field name="create_date" eval="DateTime.now() - relativedelta(days=7)"/>
</record>
<record id="slide_slide_odoo_14_development_1" model="slide.slide">
<field name="name">How To Configure Odoo With Pycharm</field>
<field name="sequence">1</field>
<field name="url">https://www.youtube.com/watch?v=p7SJW36lqVE</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to configure odoo development environment using pycharm IDE</field>
</record>
<record id="slide_slide_odoo_14_development_2" model="slide.slide">
<field name="name">How To Add Custom Modules And Custom Addons Path In Odoo14</field>
<field name="sequence">2</field>
<field name="url">https://www.youtube.com/watch?v=DJyPx5u6sd0</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_14_development_3" model="slide.slide">
<field name="name">How To Create Module In Odoo 14</field>
<field name="sequence">3</field>
<field name="url">https://www.youtube.com/watch?v=I8FNdellz3Y</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_14_development_4" model="slide.slide">
<field name="name">How To Create New Models In Odoo 14</field>
<field name="sequence">4</field>
<field name="url">https://www.youtube.com/watch?v=m7AZtSLv-wk</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_14_development_5" model="slide.slide">
<field name="name">How To Set Access Rights For Newly Created Models In Odoo14</field>
<field name="sequence">5</field>
<field name="url">https://www.youtube.com/watch?v=XcVMcJYHuzc</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_14_development_6" model="slide.slide">
<field name="name">How To Create Menu And Actions In Odoo14</field>
<field name="sequence">6</field>
<field name="url">https://www.youtube.com/watch?v=KFXoeEzwxzQ</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_14_development_7" model="slide.slide">
<field name="name">How To Create Form View In Odoo</field>
<field name="sequence">7</field>
<field name="url">https://www.youtube.com/watch?v=v0Qn-HKtir8</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_14_development_8" model="slide.slide">
<field name="name">How To Create Tree View in Odoo</field>
<field name="sequence">8</field>
<field name="url">https://www.youtube.com/watch?v=7hc3WxxWqKs</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_14_development_9" model="slide.slide">
<field name="name">How To Inherit And Add New Fields To Existing Views</field>
<field name="sequence">9</field>
<field name="url">https://www.youtube.com/watch?v=3iY3ea-wvjw</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_14_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="slide_odoo_15_development" model="slide.channel">
<field name="name">Odoo 15 Developement</field>
<field name="user_id" ref="base.user_admin"/>
<field name="enroll">public</field>
<field name="channel_type">training</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">latest</field>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="om_hospital/static/src/img/odoo15_development.png"/>
<field name="description">Learn How to Customize the Odoo ERP and Create New Modules.</field>
<field name="create_date" eval="DateTime.now() - relativedelta(days=7)"/>
</record>
<record id="slide_slide_odoo_15_development_0" model="slide.slide">
<field name="name">Introduction</field>
<field name="sequence">1</field>
<field name="slide_type">webpage</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">For odoo 15, we have added the videos we have recorded for odoo
version 15. You can watch and follow this in odoo 15 and it will work without any problems.
For any issues: odoomates@gmail.com
Changes in Odoo 15: https://github.com/OCA/maintainer-tools/wiki/Migration-to-version-15.0
</field>
</record>
<record id="slide_slide_odoo_15_development_1" model="slide.slide">
<field name="name">How To Configure Odoo With Pycharm</field>
<field name="sequence">1</field>
<field name="url">https://www.youtube.com/watch?v=DKxwcMxV02U</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
<field name="description">Steps to configure odoo development environment using pycharm IDE</field>
</record>
<record id="slide_slide_odoo_15_development_2" model="slide.slide">
<field name="name">How To Add Custom Modules And Custom Addons Path In Odoo15</field>
<field name="sequence">2</field>
<field name="url">https://www.youtube.com/watch?v=DJyPx5u6sd0</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_15_development_3" model="slide.slide">
<field name="name">How To Create Module In Odoo 15</field>
<field name="sequence">3</field>
<field name="url">https://www.youtube.com/watch?v=I8FNdellz3Y</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_15_development_4" model="slide.slide">
<field name="name">How To Create New Models In Odoo 15</field>
<field name="sequence">4</field>
<field name="url">https://www.youtube.com/watch?v=m7AZtSLv-wk</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_15_development_5" model="slide.slide">
<field name="name">How To Set Access Rights For Newly Created Models In Odoo15</field>
<field name="sequence">5</field>
<field name="url">https://www.youtube.com/watch?v=XcVMcJYHuzc</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_15_development_6" model="slide.slide">
<field name="name">How To Create Menu And Actions In Odoo15</field>
<field name="sequence">6</field>
<field name="url">https://www.youtube.com/watch?v=KFXoeEzwxzQ</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_15_development_7" model="slide.slide">
<field name="name">How To Create Form View In Odoo</field>
<field name="sequence">7</field>
<field name="url">https://www.youtube.com/watch?v=v0Qn-HKtir8</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_15_development_8" model="slide.slide">
<field name="name">How To Create Tree View in Odoo</field>
<field name="sequence">8</field>
<field name="url">https://www.youtube.com/watch?v=7hc3WxxWqKs</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
<record id="slide_slide_odoo_15_development_9" model="slide.slide">
<field name="name">How To Inherit And Add New Fields To Existing Views</field>
<field name="sequence">9</field>
<field name="url">https://www.youtube.com/watch?v=3iY3ea-wvjw</field>
<field name="slide_type">video</field>
<field name="channel_id" ref="om_hospital.slide_odoo_15_development"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="completion_time">1</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,4 @@
from . import patient
from . import doctor
from . import appointment
from . import sale

View file

@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class HospitalAppointment(models.Model):
_name = "hospital.appointment"
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = "Hospital Appointment"
_order = "doctor_id,name,age"
name = fields.Char(string='Order Reference', required=True, copy=False, readonly=True,
default=lambda self: _('New'))
patient_id = fields.Many2one('hospital.patient', string="Patient", required=True)
age = fields.Integer(string='Age', related='patient_id.age', tracking=True, store=True)
doctor_id = fields.Many2one('hospital.doctor', string="Doctor", required=True)
gender = fields.Selection([
('male', 'Male'),
('female', 'Female'),
('other', 'Other'),
], string="Gender")
state = fields.Selection([('draft', 'Draft'), ('confirm', 'Confirmed'),
('done', 'Done'), ('cancel', 'Cancelled')], default='draft',
string="Status", tracking=True)
note = fields.Text(string='Description')
date_appointment = fields.Date(string="Date")
date_checkup = fields.Datetime(string="Check Up Time")
prescription = fields.Text(string="Prescription")
prescription_line_ids = fields.One2many('appointment.prescription.lines', 'appointment_id',
string="Prescription Lines")
def action_confirm(self):
self.state = 'confirm'
def action_done(self):
self.state = 'done'
def action_draft(self):
self.state = 'draft'
def action_cancel(self):
self.state = 'cancel'
@api.model
def create(self, vals):
if vals.get('name', _('New')) == _('New'):
vals['name'] = self.env['ir.sequence'].next_by_code('hospital.appointment') or _('New')
res = super(HospitalAppointment, self).create(vals)
return res
@api.onchange('patient_id')
def onchange_patient_id(self):
if self.patient_id:
if self.patient_id.gender:
self.gender = self.patient_id.gender
if self.patient_id.note:
self.note = self.patient_id.note
else:
self.gender = ''
self.note = ''
def unlink(self):
if self.state == 'done':
raise ValidationError(_("You Cannot Delete %s as it is in Done State" % self.name))
return super(HospitalAppointment, self).unlink()
def action_url(self):
return {
'type': 'ir.actions.act_url',
'target': 'new',
'url': 'https://apps.odoo.com/apps/modules/14.0/%s/' % self.prescription,
}
class AppointmentPrescriptionLines(models.Model):
_name = "appointment.prescription.lines"
_description = "Appointment Prescription Lines"
name = fields.Char(string="Medicine", required=True)
qty = fields.Integer(string="Quantity")
appointment_id = fields.Many2one('hospital.appointment', string="Appointment")

View file

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
class HospitalDoctor(models.Model):
_name = "hospital.doctor"
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = "Hospital Doctor"
_rec_name = 'doctor_name'
doctor_name = fields.Char(string='Name', required=True, tracking=True)
age = fields.Integer(string='Age', tracking=True, copy=False)
gender = fields.Selection([
('male', 'Male'),
('female', 'Female'),
('other', 'Other'),
], required=True, default='male', tracking=True)
note = fields.Text(string='Description')
image = fields.Binary(string="Patient Image")
appointment_count = fields.Integer(string='Appointment Count', compute='_compute_appointment_count')
active = fields.Boolean(string="Active", default=True)
def copy(self, default=None):
if default is None:
default = {}
if not default.get('doctor_name'):
default['doctor_name'] = _("%s (Copy)", self.doctor_name)
default['note'] = "Copied Record"
return super(HospitalDoctor, self).copy(default)
def _compute_appointment_count(self):
for rec in self:
appointment_count = self.env['hospital.appointment'].search_count([('doctor_id', '=', rec.id)])
rec.appointment_count = appointment_count

View file

@ -0,0 +1,96 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class HospitalPatient(models.Model):
_name = "hospital.patient"
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = "Hospital Patient"
_order = "id desc"
@api.model
def default_get(self, fields):
res = super(HospitalPatient, self).default_get(fields)
res['note'] = 'NEW Patient Created'
return res
name = fields.Char(string='Name', required=True, tracking=True)
reference = fields.Char(string='Order Reference', required=True, copy=False, readonly=True,
default=lambda self: _('New'))
age = fields.Integer(string='Age', tracking=True)
gender = fields.Selection([
('male', 'Male'),
('female', 'Female'),
('other', 'Other'),
], required=True, default='male', tracking=True)
note = fields.Text(string='Description')
state = fields.Selection([('draft', 'Draft'), ('confirm', 'Confirmed'),
('done', 'Done'), ('cancel', 'Cancelled')], default='draft',
string="Status", tracking=True)
responsible_id = fields.Many2one('res.partner', string="Responsible")
appointment_count = fields.Integer(string='Appointment Count', compute='_compute_appointment_count')
image = fields.Binary(string="Patient Image")
appointment_ids = fields.One2many('hospital.appointment', 'patient_id', string="Appointments")
def _compute_appointment_count(self):
for rec in self:
appointment_count = self.env['hospital.appointment'].search_count([('patient_id', '=', rec.id)])
rec.appointment_count = appointment_count
def action_confirm(self):
for rec in self:
rec.state = 'confirm'
def action_done(self):
for rec in self:
rec.state = 'done'
def action_draft(self):
for rec in self:
rec.state = 'draft'
def action_cancel(self):
for rec in self:
rec.state = 'cancel'
@api.model
def create(self, vals):
if not vals.get('note'):
vals['note'] = 'New Patient'
if vals.get('reference', _('New')) == _('New'):
vals['reference'] = self.env['ir.sequence'].next_by_code('hospital.patient') or _('New')
res = super(HospitalPatient, self).create(vals)
return res
@api.constrains('name')
def check_name(self):
for rec in self:
patients = self.env['hospital.patient'].search([('name', '=', rec.name), ('id', '!=', rec.id)])
if patients:
raise ValidationError(_("Name %s Already Exists" % rec.name))
@api.constrains('age')
def check_age(self):
for rec in self:
if rec.age == 0:
raise ValidationError(_("Age Cannot Be Zero .. !"))
def name_get(self):
result = []
for rec in self:
name = '[' + rec.reference + '] ' + rec.name
result.append((rec.id, name))
return result
def action_open_appointments(self):
return {
'type': 'ir.actions.act_window',
'name': 'Appointments',
'res_model': 'hospital.appointment',
'domain': [('patient_id', '=', self.id)],
'context': {'default_patient_id': self.id},
'view_mode': 'tree,form',
'target': 'current',
}

View file

@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models
class SaleOrder(models.Model):
_inherit = "sale.order"
sale_description = fields.Char(string='Sale Description')

View file

@ -0,0 +1,3 @@
# from . import patient_card_xls

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="report_patient_id_card">
<t t-foreach="docs" t-as="o">
<t t-call="web.basic_layout">
<div class="page">
<div class="oe_structure"/>
<div class="row">
<div class="col-xs-8">
<table class="table table-condensed" style="border: 3px solid black !important;">
<tr>
<td width="40%">
<p style="text-align:center;padding-top:10px;">
<img t-if="not o.image"
t-att-src="'/web/static/src/img/placeholder.png'" height="140"
border="1" width="120"/>
<img t-if="o.image"
t-att-src="'data:image/png;base64,%s' % to_text(o.image)"
height="140" border="1" width="120"/>
</p>
</td>
<td width="60%">
<table>
<tr>
<td colspan="3" class="text-center">
<span t-field="o.name"/>
</td>
</tr>
<tr>
<td>
<span>
<strong>Age:</strong>
</span>
</td>
<td>
<span>:</span>
</td>
<td>
<span t-field="o.age"/>
</td>
</tr>
<tr>
<td>
<span>
<strong>Reference:</strong>
</span>
</td>
<td>
<span>:</span>
</td>
<td>
<span t-field="o.reference"/>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</div>
</t>
</t>
</template>
</odoo>

View file

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
import base64
import io
from odoo import models
class PatientCardXlsx(models.AbstractModel):
_name = 'report.om_hospital.report_patient_id_card_xls'
_inherit = 'report.report_xlsx.abstract'
def generate_xlsx_report(self, workbook, data, patients):
bold = workbook.add_format({'bold': True})
format_1 = workbook.add_format({'bold': True, 'align': 'center', 'bg_color': 'yellow'})
for obj in patients:
sheet = workbook.add_worksheet(obj.name)
row = 3
col = 3
sheet.set_column('D:D', 12)
sheet.set_column('E:E', 13)
row += 1
sheet.merge_range(row, col, row, col + 1, 'ID Card', format_1)
row += 1
if obj.image:
patient_image = io.BytesIO(base64.b64decode(obj.image))
sheet.insert_image(row, col, "image.png", {'image_data': patient_image, 'x_scale': 0.5, 'y_scale': 0.5})
row += 6
sheet.write(row, col, 'Name', bold)
sheet.write(row, col + 1, obj.name)
row += 1
sheet.write(row, col, 'Age', bold)
sheet.write(row, col + 1, obj.age)
row += 1
sheet.write(row, col, 'Reference', bold)
sheet.write(row, col + 1, obj.reference)
row += 2
sheet.merge_range(row, col, row + 1, col + 1, '', format_1)

View file

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="report_patient_detail">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="web.external_layout">
<div class="page">
<div class="oe_structure"/>
<div class="row">
<div class="col-xs-8">
<table class="table table-condensed" style="border: 3px solid black !important;">
<tr>
<td width="40%">
<p style="text-align:center;padding-top:10px;">
<img t-if="not o.image"
t-att-src="'/web/static/src/img/placeholder.png'" height="140"
border="1" width="120"/>
<img t-if="o.image"
t-att-src="'data:image/png;base64,%s' % to_text(o.image)"
height="140" border="1" width="120"/>
</p>
</td>
<td width="60%">
<table>
<tr>
<td colspan="3" class="text-center">
<span t-field="o.name"/>
</td>
</tr>
<tr>
<td>
<span>
<strong>Age:</strong>
</span>
</td>
<td>
<span>:</span>
</td>
<td>
<span t-field="o.age"/>
</td>
</tr>
<tr>
<td>
<span>
<strong>Reference:</strong>
</span>
</td>
<td>
<span>:</span>
</td>
<td>
<span t-field="o.reference"/>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</div>
<br/>
<t t-if="o.appointment_ids">
<span>Appointment Details</span>
<table class="table table-sm o_main_table" name="appointment">
<thead>
<tr>
<th name="th_reference" class="text-start">
<span>Reference</span>
</th>
<th name="th_age" class="text-start">
<span>Age</span>
</th>
<th name="th_doctor" class="text-start">
<span>Doctor</span>
</th>
</tr>
</thead>
<t t-set="appointment_count" t-value="0"/>
<t t-foreach="o.appointment_ids" t-as="line">
<t t-set="appointment_count" t-value="appointment_count + 1"/>
<tr>
<td>
<span t-field="line.name"/>
</td>
<td>
<span t-field="line.age"/>
</td>
<td>
<span t-field="line.doctor_id.doctor_name"/>
</td>
</tr>
</t>
<tr>
<td colspan="2">
<strong>Total Appointments</strong>
</td>
<td>
<t t-esc="appointment_count"/>
</td>
</tr>
</table>
</t>
</div>
</t>
</t>
</t>
</template>
</odoo>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="report_patient_details" model="ir.actions.report">
<field name="name">Patient Details</field>
<field name="model">hospital.patient</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">om_hospital.report_patient_detail</field>
<field name="report_file">om_hospital.report_patient_detail</field>
<field name="binding_model_id" ref="model_hospital_patient"/>
<field name="binding_type">report</field>
</record>
<record id="report_patient_card" model="ir.actions.report">
<field name="name">Patient Card</field>
<field name="model">hospital.patient</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">om_hospital.report_patient_id_card</field>
<field name="report_file">om_hospital.report_patient_id_card</field>
<field name="binding_model_id" ref="model_hospital_patient"/>
<field name="binding_type">report</field>
</record>
<!-- <record id="report_patient_card_xls" model="ir.actions.report">-->
<!-- <field name="name">Patient Card Excel</field>-->
<!-- <field name="model">hospital.patient</field>-->
<!-- <field name="report_type">xlsx</field>-->
<!-- <field name="report_name">om_hospital.report_patient_id_card_xls</field>-->
<!-- <field name="report_file">om_hospital.report_patient_id_card_xls</field>-->
<!-- <field name="binding_model_id" ref="model_hospital_patient"/>-->
<!-- <field name="binding_type">report</field>-->
<!-- </record>-->
</odoo>

View file

@ -0,0 +1,7 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hospital_patient,access.hospital.patient,model_hospital_patient,,1,1,1,1
access_hospital_doctor,access.hospital.doctor,model_hospital_doctor,,1,1,1,1
access_hospital_appointment,access.hospital.appointment,model_hospital_appointment,,1,1,1,1
access_create_appointment_wizard,access.create.appointment.wizard,model_create_appointment_wizard,,1,1,1,1
access_search_appointment_wizard,access.search.appointment.wizard,model_search_appointment_wizard,,1,1,1,1
access_appointment_prescription_lines,access.appointment.prescription.lines,model_appointment_prescription_lines,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hospital_patient access.hospital.patient model_hospital_patient 1 1 1 1
3 access_hospital_doctor access.hospital.doctor model_hospital_doctor 1 1 1 1
4 access_hospital_appointment access.hospital.appointment model_hospital_appointment 1 1 1 1
5 access_create_appointment_wizard access.create.appointment.wizard model_create_appointment_wizard 1 1 1 1
6 access_search_appointment_wizard access.search.appointment.wizard model_search_appointment_wizard 1 1 1 1
7 access_appointment_prescription_lines access.appointment.prescription.lines model_appointment_prescription_lines 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View file

@ -0,0 +1,140 @@
<section class="oe_container oe_dark">
<div class="col-md-12">
<h2 class="oe_slogan" style="font-size: 35px;color:#2C0091"><b>Odoo Development Tutorials</b></h2>
</div>
</section>
<section class="oe_container">
<div class="col-md-12">
<h2 class="oe_slogan" style="font-size: 35px;color:#000000"><b>Become a Odoo Developer Easily. Almost all the
basic topics covered, Configure Odoo and Pycharm, Create Your First Module. How to Create New Models, Define
New Menu, Action and Different Views. Basics of Creating PDF Report and Excel Reports. Statusbar, State and
WorkFlows, Wizard etc</b></h2>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_centeralign oe_websiteonly">
<h4 class="oe_slogan"><a href="https://www.youtube.com/channel/UCVKlUZP7HAhdQgs-9iTJklQ?sub_confirmation=1" target="_blank" style="color: #FFFFFF !important; border-radius: 0; background-color: #9c676e; border-color: #005ca7; padding: 15px; font-weight: bold;">
<i class="fa fa-youtube"></i>
Subscribe and Support US
</a></h4>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div style="text-align:center;">
<p class="fa fa-hand-o-right" style="color:CRIMSON;font-size: 25px;">
<span style="color:#2dd280;font-size: 15px;">Development Tutorials in Odoo15, Odoo14, Odoo13 and Odoo12 versions.</span>
</p><br/>
<p class="fa fa-hand-o-right" style="color:CRIMSON;font-size: 25px;">
<span style="color:#2dd280;font-size: 15px;">How to configure odoo and pycharm.</span>
</p><br/>
<p class="fa fa-hand-o-right" style="color:CRIMSON;font-size: 25px;">
<span style="color:#2dd280;font-size: 15px;">Create your First Module.</span>
</p><br/>
<p class="fa fa-hand-o-right" style="color:CRIMSON;font-size: 25px;">
<span style="color:#2dd280;font-size: 15px;">How to Create New Models, Define
New Menu, Action and Different Views.</span>
</p><br/>
<p class="fa fa-hand-o-right" style="color:CRIMSON;font-size: 25px;">
<span style="color:#2dd280;font-size: 15px;">Basics of Creating PDF Report and Excel Reports. Statusbar, State and
WorkFlows, Wizard etc</span>
</p><br/>
</div>
<br/>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Development Tutorials in Odoo15, Odoo14 , Odoo13 and Odoo12 versions.</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="om_develop.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Odoo15 Development Courses.</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="develop_15.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Odoo14 Development Courses.</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="develop_14.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Odoo13 Development Courses.</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="develop_13.png" style="height:400px;">
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<div class="oe_span12">
<h3 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Odoo12 Development Courses.</h3>
<div class="oe_demo oe_picture oe_screenshot">
<img src="develop_12.png" style="height:400px;">
</div>
</div>
</div>
</section>
<hr style="width: 100%;height: 4px;background: #2C0091;margin: 0px 0px;">
<hr style="width: 100%;height: 4px;background: #148963;margin: 0px 0px;">
<section class="oe_container oe_dark">
<div class="oe_row ">
<div class="oe_slogan text-center">
<img src="odoo_mates.png"/>
<div style="color:#269900;">
<h3 style="color:#2C0091;font-size: 25px;">If you have any queries or doubt just contact us:</h3><br>
<h3 style="color:#2C0091;font-size: 20px;">Email: <a href="odoomates@gmail.com">odoomates@gmail.com</a> <br></h3>
</div>
<div class="oe_slogan">
<h2>
<a target="_blank" href="https://www.facebook.com/odoomate/" target="new">
<i class="fa fa-facebook-square" style="font-size:38px;"></i>
</a>
<a target="_blank" href="https://twitter.com/odoomates/" target="new">
<i class="fa fa-twitter" style="font-size:38px;"></i>
</a>
<a href="#" target="_blank">
<i class="fa fa-linkedin" style="font-size:38px;"></i>
</a>
<a target="_blank" href="https://www.youtube.com/channel/UCVKlUZP7HAhdQgs-9iTJklQ">
<i class="fa fa-youtube-play" style="font-size:38px;"></i>
</a>
</h2>
</div>
</div>
</div>
</section>
<hr style="width: 100%;height: 4px;background: #148963;margin: 0px 0px;">
<hr style="width: 100%;height: 4px;background: #2C0091;margin: 0px 0px;">

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 KiB

View file

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="action_confirm_appointments" model="ir.actions.server">
<field name="name">Confirm Appointment</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_hospital_appointment"/>
<field name="binding_model_id" ref="model_hospital_appointment"/>
<field name="state">code</field>
<field name="code">records.action_confirm()</field>
</record>
<record id="view_appointment_tree" model="ir.ui.view">
<field name="name">hospital.appointment.tree</field>
<field name="model">hospital.appointment</field>
<field name="arch" type="xml">
<tree multi_edit="1">
<header>
<button name="action_done" string="Mark As Done" class="btn-primary"
type="object"/>
</header>
<field name="name"/>
<field name="doctor_id"/>
<field name="patient_id"/>
<field name="age" optional="show"/>
<field name="gender" optional="show"/>
<field name="date_appointment" optional="show"/>
<field name="date_checkup" optional="hide"/>
<field name="note" optional="show"/>
<field name="state" optional="show"/>
</tree>
</field>
</record>
<record id="view_appointment_form" model="ir.ui.view">
<field name="name">hospital.appointment.form</field>
<field name="model">hospital.appointment</field>
<field name="arch" type="xml">
<form>
<header>
<button id="button_confirm" name="action_confirm" string="Confirm" class="btn-primary" states="draft"
confirm="Are you sure that you need to confirm ?"
type="object"/>
<button id="button_done" name="action_done" string="Mark As Done" class="btn-primary" states="confirm"
type="object"/>
<button id="button_draft" name="action_draft" string="Set To Draft" class="btn-primary"
states="cancel" type="object"/>
<button id="button_cancel" name="action_cancel" string="Cancel" states="draft,done,confirm"
confirm="Are you sure that you need to cancel ?"
type="object"/>
<button name="action_url" string="Open URL" class="btn-primary"
type="object"/>
<field name="state" widget="statusbar" statusbar_visible="draft,done,confirm"/>
</header>
<sheet>
<div class="oe_title">
<h1>
<field name="name" readonly="1"/>
</h1>
</div>
<group>
<group>
<field name="patient_id"/>
<field name="gender" readonly="1" force_save="1"/>
<field name="age"/>
</group>
<group>
<field name="doctor_id"/>
<field name="date_appointment"/>
<field name="date_checkup"/>
</group>
</group>
<notebook>
<page string="Doctor Prescription" name="doctor_prescription">
<group>
<field name="prescription"/>
</group>
</page>
<page string="Medicine" name="medicine">
<field name="prescription_line_ids">
<tree editable="bottom">
<field name="name"/>
<field name="qty"/>
</tree>
<form>
<group>
<group>
<field name="name"/>
</group>
<group>
<field name="qty"/>
</group>
</group>
</form>
</field>
</page>
<page string="Other Info" name="other_info">
<field name="note"/>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="view_appointment_search" model="ir.ui.view">
<field name="name">hospital.appointment.search</field>
<field name="model">hospital.appointment</field>
<field name="arch" type="xml">
<search string="Patients">
<field name="name"/>
<field name="patient_id"/>
<separator/>
<filter string="Draft" name="draft" domain="[('state', '=', 'draft')]"/>
<group expand="1" string="Group By">
<filter string="Patient" name="patient_id" context="{'group_by':'patient_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_hospital_appointment" model="ir.actions.act_window">
<field name="name">Appointments</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hospital.appointment</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_draft': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first appointment !
</p>
</field>
</record>
<menuitem id="menu_appointment_root"
name="Appointments"
parent="menu_hospital_root"
sequence="20"/>
<menuitem id="menu_appointment"
name="Appointments"
parent="menu_appointment_root"
action="action_hospital_appointment"
sequence="10"/>
<menuitem id="menu_create_appointment"
name="Create Appointment"
parent="menu_appointment_root"
action="action_create_appointment"
sequence="20"/>
<menuitem id="menu_search_appointment"
name="Search Appointment"
parent="menu_appointment_root"
action="action_search_appointment"
sequence="30"/>
</odoo>

View file

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="action_open_appointments" model="ir.actions.act_window">
<field name="name">Appointments</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hospital.appointment</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('doctor_id','=', active_id)]</field>
<field name="context">{'default_doctor_id': active_id}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first appointment !
</p>
</field>
</record>
<record id="view_doctor_kanban" model="ir.ui.view">
<field name="name">hospital.doctor.kanban</field>
<field name="model">hospital.doctor</field>
<field name="arch" type="xml">
<kanban sample="1">
<field name="id"/>
<field name="doctor_name"/>
<field name="gender"/>
<field name="age"/>
<field name="note"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="oe_kanban_details">
<ul>
<li>
Name: <field name="doctor_name"/>
</li>
<li>
Age: <field name="age"/>
</li>
<li>
Gender: <field name="gender"/>
</li>
</ul>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="view_doctor_tree" model="ir.ui.view">
<field name="name">hospital.doctor.tree</field>
<field name="model">hospital.doctor</field>
<field name="arch" type="xml">
<tree sample="1">
<field name="doctor_name"/>
<field name="gender"/>
<field name="age"/>
<field name="note"/>
</tree>
</field>
</record>
<record id="view_doctor_form" model="ir.ui.view">
<field name="name">hospital.doctor.form</field>
<field name="model">hospital.doctor</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="%(om_hospital.action_open_appointments)d" type="action"
class="oe_stat_button" icon="fa-calendar">
<div class="o_stat_info">
<field name="appointment_count" class="o_stat_value"/>
<span class="o_stat_text">Appointments</span>
</div>
</button>
</div>
<field name="image" widget="image" class="oe_avatar"/>
<group>
<group>
<field name="doctor_name"/>
<field name="age"/>
</group>
<group>
<field name="gender"/>
<field name="note"/>
<field name="active" invisible="1"/>
</group>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="view_doctor_search" model="ir.ui.view">
<field name="name">hospital.doctor.search</field>
<field name="model">hospital.doctor</field>
<field name="arch" type="xml">
<search string="Doctors">
<field name="doctor_name"/>
<field name="note"/>
<separator/>
<filter string="Male" name="male" domain="[('gender', '=', 'male')]"/>
<filter string="Female" name="female" domain="[('gender', '=', 'female')]"/>
<filter string="Others" name="other" domain="[('gender', '=', 'other')]"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
<group expand="1" string="Group By">
<filter string="Gender" name="gender" context="{'group_by':'gender'}"/>
</group>
</search>
</field>
</record>
<record id="action_hospital_doctor" model="ir.actions.act_window">
<field name="name">Doctors</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hospital.doctor</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first doctor!
</p>
</field>
</record>
<menuitem id="menu_doctor_root"
name="Doctors"
parent="menu_hospital_root"
sequence="10"/>
<menuitem id="menu_doctor"
name="Doctors"
parent="menu_doctor_root"
action="action_hospital_doctor"
sequence="10"/>
</odoo>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="action_hospital_kids" model="ir.actions.act_window">
<field name="name">Kids</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hospital.patient</field>
<field name="view_mode">tree,kanban,form</field>
<field name="context">{}</field>
<field name="domain">[('age', '&lt;=', 18)]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first kids!
</p>
</field>
</record>
<menuitem id="menu_kids"
name="Kids"
parent="menu_patient_root"
action="action_hospital_kids"
sequence="20"/>
</odoo>

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="action_male_patients" model="ir.actions.act_window">
<field name="name">Male Patients</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hospital.patient</field>
<field name="view_mode">tree,kanban,form</field>
<field name="context">{'hide_gender': 1}</field>
<field name="domain">[('gender', '=', 'male')]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first male patient!
</p>
</field>
</record>
<menuitem id="menu_male_patients"
name="Male Patients"
parent="menu_patient_root"
action="action_male_patients"
sequence="30"/>
<record id="action_female_patients" model="ir.actions.act_window">
<field name="name">Female Patients</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hospital.patient</field>
<field name="view_mode">tree,kanban,form</field>
<field name="context">{'default_gender': 'female', 'default_note': 'New Patient', 'hide_gender': 1}</field>
<field name="domain">[('gender', '=', 'female')]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your female patient !
</p>
</field>
</record>
<menuitem id="menu_female_patients"
name="Female Patients"
parent="menu_patient_root"
action="action_female_patients"
sequence="40"/>
</odoo>

View file

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="action_create_appointments" model="ir.actions.server">
<field name="name">Create Appointment</field>
<field name="model_id" ref="om_hospital.model_hospital_patient"/>
<field name="binding_model_id" ref="om_hospital.model_hospital_patient"/>
<field name="binding_view_types">list,form</field>
<field name="state">code</field>
<field name="code">
if record:
action_values = env.ref('om_hospital.action_create_appointment').sudo().read()[0]
action_values.update({'context': env.context})
action = action_values
</field>
</record>
<record id="view_patient_kanban" model="ir.ui.view">
<field name="name">hospital.patient.kanban</field>
<field name="model">hospital.patient</field>
<field name="arch" type="xml">
<kanban default_order="id asc">
<field name="id"/>
<field name="name"/>
<field name="reference"/>
<field name="gender"/>
<field name="age"/>
<field name="note"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="oe_kanban_details">
<ul>
<li>
ID: <field name="reference"/>
</li>
<li>
Name: <field name="name"/>
</li>
<li>
Age: <field name="age"/>
</li>
<li>
Gender: <field name="gender"/>
</li>
</ul>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="view_patient_tree" model="ir.ui.view">
<field name="name">hospital.patient.tree</field>
<field name="model">hospital.patient</field>
<field name="arch" type="xml">
<tree>
<field name="reference"/>
<field name="name"/>
<field name="responsible_id"/>
<field name="gender"/>
<field name="age"/>
<field name="note"/>
<field name="appointment_count"/>
<!-- <field name="state"/>-->
</tree>
</field>
</record>
<record id="view_patient_form" model="ir.ui.view">
<field name="name">hospital.patient.form</field>
<field name="model">hospital.patient</field>
<field name="arch" type="xml">
<form>
<header>
<!-- <button id="button_confirm" name="action_confirm" string="Confirm" class="btn-primary" states="draft"-->
<!-- confirm="Are you sure that you need to confirm ?"-->
<!-- type="object"/>-->
<!-- <button id="button_done" name="action_done" string="Mark As Done" class="btn-primary" states="confirm"-->
<!-- type="object"/>-->
<!-- <button id="button_draft" name="action_draft" string="Set To Draft" class="btn-primary"-->
<!-- states="cancel" type="object"/>-->
<!-- <button id="button_cancel" name="action_cancel" string="Cancel" states="draft,done,confirm"-->
<!-- confirm="Are you sure that you need to cancel ?"-->
<!-- type="object"/>-->
<!-- <button id="button_create_appointment" name="%(om_hospital.action_create_appointment)d"-->
<!-- string="Create Appointment" class="btn-primary"-->
<!-- type="action"/>-->
<!-- <field name="state" widget="statusbar" statusbar_visible="draft,done,confirm"/>-->
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="action_open_appointments" type="object" class="oe_stat_button" icon="fa-calendar">
<div class="o_stat_info">
<field name="appointment_count" class="o_stat_value"/>
<span class="o_stat_text">Appointments</span>
</div>
</button>
</div>
<field name="image" widget="image" class="oe_avatar"/>
<div class="oe_title">
<h1>
<field name="reference" readonly="1"/>
</h1>
</div>
<group>
<group>
<field name="name"/>
<field name="responsible_id"/>
<field name="age"/>
<field name="appointment_count"/>
</group>
<group>
<field name="gender" invisible="context.get('hide_gender')"/>
<field name="note"/>
</group>
</group>
<notebook>
<page string="Appointments" name="appointment">
<field name="appointment_ids" readonly="1">
</field>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<record id="view_patient_search" model="ir.ui.view">
<field name="name">hospital.patient.search</field>
<field name="model">hospital.patient</field>
<field name="arch" type="xml">
<search string="Patients">
<field name="name"/>
<field name="note"/>
<separator/>
<filter string="Male" name="male" domain="[('gender', '=', 'male')]"/>
<filter string="Female" name="female" domain="[('gender', '=', 'female')]"/>
<filter string="Others" name="other" domain="[('gender', '=', 'other')]"/>
<group expand="1" string="Group By">
<filter string="Gender" name="gender" context="{'group_by':'gender'}"/>
<filter string="Patient Name" name="patient_name" context="{'group_by':'name'}"/>
<filter string="Responsible" name="responsible_id" context="{'group_by':'responsible_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_hospital_patient" model="ir.actions.act_window">
<field name="name">Patients</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hospital.patient</field>
<field name="view_mode">tree,kanban,form</field>
<field name="context">{}</field>
<!-- <field name="context">{'search_default_responsible_id': 1}</field>-->
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create your first patient!
</p>
</field>
</record>
<menuitem id="menu_hospital_root"
name="Hospital"
sequence="10"/>
<menuitem id="menu_patient_root"
name="Patients"
parent="menu_hospital_root"
sequence="10"/>
<menuitem id="menu_patient"
name="Patients"
parent="menu_patient_root"
action="action_hospital_patient"
sequence="10"/>
</odoo>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_order_form_inherit" model="ir.ui.view">
<field name="name">sale.order.inherited</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='payment_term_id']" position="after">
<field name="sale_description"/>
</xpath>
</field>
</record>
<record id="view_order_tree_inherit" model="ir.ui.view">
<field name="name">sale.order.inherited</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_quotation_tree"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="after">
<field name="sale_description"/>
</xpath>
</field>
</record>
<menuitem id="menu_sale_appointment"
name="Appointments"
parent="sale.sale_order_menu"
sequence="2"
action="action_hospital_appointment"/>
</odoo>

View file

@ -0,0 +1,4 @@
from . import create_appointment
from . import search_appointment

View file

@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
class CreateAppointmentWizard(models.TransientModel):
_name = "create.appointment.wizard"
_description = "Create Appointment Wizard"
@api.model
def default_get(self, fields):
res = super(CreateAppointmentWizard, self).default_get(fields)
if self._context.get('active_id'):
res['patient_id'] = self._context.get('active_id')
return res
date_appointment = fields.Date(string='Date', required=False)
patient_id = fields.Many2one('hospital.patient', string="Patient", required=True)
def action_create_appointment(self):
vals = {
'patient_id': self.patient_id.id,
'doctor_id': 2,
'date_appointment': self.date_appointment
}
appointment_rec = self.env['hospital.appointment'].create(vals)
return {
'name': _('Appointment'),
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'hospital.appointment',
'res_id': appointment_rec.id,
}
# def action_view_appointment(self):
# # action = self.env.ref('om_hospital.action_hospital_appointment').read()[0]
# # action['domain'] = [('patient_id', '=', self.patient_id.id)]
# # return action
#
# action = self.env['ir.actions.actions']._for_xml_id("om_hospital.action_hospital_appointment")
# action['domain'] = [('patient_id', '=', self.patient_id.id)]
# return action
#
# # return {
# # 'type': 'ir.actions.act_window',
# # 'name': 'Appointments',
# # 'res_model': 'hospital.appointment',
# # 'view_type': 'form',
# # 'domain': [('patient_id', '=', self.patient_id.id)],
# # 'view_mode': 'tree,form',
# # 'target': 'current',
# # }
# # return action

View file

@ -0,0 +1,31 @@
<?xml version="1.0"?>
<odoo>
<record id="view_create_appointment_form" model="ir.ui.view">
<field name="name">create.appointment.wizard.form</field>
<field name="model">create.appointment.wizard</field>
<field name="arch" type="xml">
<form string="Create New Appointment">
<group>
<field name="date_appointment"/>
<field name="patient_id"/>
</group>
<footer>
<button name="action_create_appointment" type="object" string="Create" class="btn-primary"/>
<!-- <button name="action_view_appointment" type="object" string="View Appointments" class="btn-primary"/>-->
<button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_create_appointment" model="ir.actions.act_window">
<field name="name">Create Appointment</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">create.appointment.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_create_appointment_form"/>
<field name="target">new</field>
</record>
</odoo>

View file

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
class SearchAppointmentWizard(models.TransientModel):
_name = "search.appointment.wizard"
_description = "Search Appointment Wizard"
patient_id = fields.Many2one('hospital.patient', string="Patient", required=True)
def action_search_appointment_m1(self):
action = self.env.ref('om_hospital.action_hospital_appointment').read()[0]
action['domain'] = [('patient_id', '=', self.patient_id.id)]
return action
def action_search_appointment_m2(self):
action = self.env['ir.actions.actions']._for_xml_id("om_hospital.action_hospital_appointment")
action['domain'] = [('patient_id', '=', self.patient_id.id)]
return action
def action_search_appointment_m3(self):
return {
'type': 'ir.actions.act_window',
'name': 'Appointments',
'res_model': 'hospital.appointment',
'view_type': 'form',
'domain': [('patient_id', '=', self.patient_id.id)],
'view_mode': 'tree,form',
'target': 'current',
}

View file

@ -0,0 +1,34 @@
<?xml version="1.0"?>
<odoo>
<record id="view_search_appointment_form" model="ir.ui.view">
<field name="name">search.appointment.wizard.form</field>
<field name="model">search.appointment.wizard</field>
<field name="arch" type="xml">
<form string="Search Appointment">
<group>
<field name="patient_id"/>
</group>
<footer>
<button name="action_search_appointment_m1" type="object" string="Search Appointments (M1)"
class="btn-primary"/>
<button name="action_search_appointment_m2" type="object" string="Search Appointments (M2)"
class="btn-primary"/>
<button name="action_search_appointment_m3" type="object" string="Search Appointments (M3)"
class="btn-primary"/>
<button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_search_appointment" model="ir.actions.act_window">
<field name="name">View Appointment</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">search.appointment.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_search_appointment_form"/>
<field name="target">new</field>
</record>
</odoo>

View file

@ -0,0 +1,45 @@
[project]
name = "odoo-bringout-odoomates-om_hospital"
version = "16.0.0"
description = "Odoo 16 Development Tutorials - Odoo 16 Development Tutorials"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-sale>=16.0.0",
"odoo-bringout-oca-ocb-mail>=16.0.0",
"odoo-bringout-odoomates-website_slides>=16.0.0",
"odoo-bringout-oca-ocb-hr>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["om_hospital"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]