Browse Source

May 30: [ADD] Initial Commit 'agriculture_management_odoo'

pull/164/merge
RisvanaCybro 11 months ago
parent
commit
1a4e4f53af
  1. 49
      agriculture_management_odoo/README.rst
  2. 23
      agriculture_management_odoo/__init__.py
  3. 72
      agriculture_management_odoo/__manifest__.py
  4. 19
      agriculture_management_odoo/data/ir_sequence_data.xml
  5. 6
      agriculture_management_odoo/doc/RELEASE_NOTES.md
  6. 36
      agriculture_management_odoo/models/__init__.py
  7. 52
      agriculture_management_odoo/models/agriculture_tag.py
  8. 62
      agriculture_management_odoo/models/animal_detail.py
  9. 141
      agriculture_management_odoo/models/animal_rental.py
  10. 44
      agriculture_management_odoo/models/crop_animal.py
  11. 43
      agriculture_management_odoo/models/crop_machinery.py
  12. 134
      agriculture_management_odoo/models/crop_request.py
  13. 62
      agriculture_management_odoo/models/damage_loss.py
  14. 53
      agriculture_management_odoo/models/farmer_detail.py
  15. 34
      agriculture_management_odoo/models/fleet_vehicle.py
  16. 58
      agriculture_management_odoo/models/location_detail.py
  17. 64
      agriculture_management_odoo/models/pest_detail.py
  18. 112
      agriculture_management_odoo/models/pest_request.py
  19. 55
      agriculture_management_odoo/models/seed_detail.py
  20. 79
      agriculture_management_odoo/models/vehicle_detail.py
  21. 141
      agriculture_management_odoo/models/vehicle_rental.py
  22. 13
      agriculture_management_odoo/report/crop_animal_reports.xml
  23. 72
      agriculture_management_odoo/report/crop_animal_templates.xml
  24. 13
      agriculture_management_odoo/report/crop_request_reports.xml
  25. 90
      agriculture_management_odoo/report/crop_request_templates.xml
  26. 13
      agriculture_management_odoo/report/crop_vehicle_reports.xml
  27. 71
      agriculture_management_odoo/report/crop_vehicle_templates.xml
  28. 13
      agriculture_management_odoo/report/pest_request_reports.xml
  29. 111
      agriculture_management_odoo/report/pest_request_templates.xml
  30. 17
      agriculture_management_odoo/security/agriculture_management_groups.xml
  31. 85
      agriculture_management_odoo/security/crop_request_security.xml
  32. 35
      agriculture_management_odoo/security/ir.model.access.csv
  33. BIN
      agriculture_management_odoo/static/description/assets/icons/check.png
  34. BIN
      agriculture_management_odoo/static/description/assets/icons/chevron.png
  35. BIN
      agriculture_management_odoo/static/description/assets/icons/cogs.png
  36. BIN
      agriculture_management_odoo/static/description/assets/icons/consultation.png
  37. BIN
      agriculture_management_odoo/static/description/assets/icons/ecom-black.png
  38. BIN
      agriculture_management_odoo/static/description/assets/icons/education-black.png
  39. BIN
      agriculture_management_odoo/static/description/assets/icons/hotel-black.png
  40. BIN
      agriculture_management_odoo/static/description/assets/icons/license.png
  41. BIN
      agriculture_management_odoo/static/description/assets/icons/lifebuoy.png
  42. BIN
      agriculture_management_odoo/static/description/assets/icons/logo.png
  43. BIN
      agriculture_management_odoo/static/description/assets/icons/manufacturing-black.png
  44. BIN
      agriculture_management_odoo/static/description/assets/icons/pos-black.png
  45. BIN
      agriculture_management_odoo/static/description/assets/icons/puzzle.png
  46. BIN
      agriculture_management_odoo/static/description/assets/icons/restaurant-black.png
  47. BIN
      agriculture_management_odoo/static/description/assets/icons/service-black.png
  48. BIN
      agriculture_management_odoo/static/description/assets/icons/trading-black.png
  49. BIN
      agriculture_management_odoo/static/description/assets/icons/training.png
  50. BIN
      agriculture_management_odoo/static/description/assets/icons/update.png
  51. BIN
      agriculture_management_odoo/static/description/assets/icons/user.png
  52. BIN
      agriculture_management_odoo/static/description/assets/icons/wrench.png
  53. BIN
      agriculture_management_odoo/static/description/assets/modules/module_image (1).png
  54. BIN
      agriculture_management_odoo/static/description/assets/modules/module_image (2).png
  55. BIN
      agriculture_management_odoo/static/description/assets/modules/module_image (4).png
  56. BIN
      agriculture_management_odoo/static/description/assets/modules/module_image.jpeg
  57. BIN
      agriculture_management_odoo/static/description/assets/modules/module_image.png
  58. BIN
      agriculture_management_odoo/static/description/assets/screenshots/agr_conf_3.png
  59. BIN
      agriculture_management_odoo/static/description/assets/screenshots/agr_crop_4.png
  60. BIN
      agriculture_management_odoo/static/description/assets/screenshots/agr_manager_1.png
  61. BIN
      agriculture_management_odoo/static/description/assets/screenshots/agr_user_2.png
  62. BIN
      agriculture_management_odoo/static/description/assets/screenshots/agr_vehicle_repor_6.png
  63. BIN
      agriculture_management_odoo/static/description/assets/screenshots/agr_vehicle_report_print_5.png
  64. BIN
      agriculture_management_odoo/static/description/assets/screenshots/animal_rental_10.png
  65. BIN
      agriculture_management_odoo/static/description/assets/screenshots/animal_repor_8.png
  66. BIN
      agriculture_management_odoo/static/description/assets/screenshots/animal_report_print_7.png
  67. BIN
      agriculture_management_odoo/static/description/assets/screenshots/damage_loss_11.png
  68. BIN
      agriculture_management_odoo/static/description/assets/screenshots/hero.gif
  69. BIN
      agriculture_management_odoo/static/description/assets/screenshots/main_rep_pdf_out_16.png
  70. BIN
      agriculture_management_odoo/static/description/assets/screenshots/main_report_14.png
  71. BIN
      agriculture_management_odoo/static/description/assets/screenshots/pest_details_13.png
  72. BIN
      agriculture_management_odoo/static/description/assets/screenshots/pest_req_12.png
  73. BIN
      agriculture_management_odoo/static/description/assets/screenshots/rental_veh_9.png
  74. BIN
      agriculture_management_odoo/static/description/assets/screenshots/report_wiz_15.png
  75. BIN
      agriculture_management_odoo/static/description/banner.png
  76. BIN
      agriculture_management_odoo/static/description/icon.png
  77. 683
      agriculture_management_odoo/static/description/index.html
  78. 106
      agriculture_management_odoo/views/agriculture_management_menus.xml
  79. 50
      agriculture_management_odoo/views/agriculture_tag_views.xml
  80. 68
      agriculture_management_odoo/views/animal_detail_views.xml
  81. 93
      agriculture_management_odoo/views/animal_rental_views.xml
  82. 163
      agriculture_management_odoo/views/crop_request_views.xml
  83. 64
      agriculture_management_odoo/views/damage_loss_views.xml
  84. 79
      agriculture_management_odoo/views/farmer_detail_views.xml
  85. 19
      agriculture_management_odoo/views/fleet_vehicle_views.xml
  86. 61
      agriculture_management_odoo/views/location_detail_views.xml
  87. 67
      agriculture_management_odoo/views/pest_detail_views.xml
  88. 94
      agriculture_management_odoo/views/pest_request_views.xml
  89. 60
      agriculture_management_odoo/views/seed_detail_views.xml
  90. 59
      agriculture_management_odoo/views/vehicle_detail_views.xml
  91. 94
      agriculture_management_odoo/views/vehicle_rental_views.xml
  92. 25
      agriculture_management_odoo/wizard/__init__.py
  93. 52
      agriculture_management_odoo/wizard/animal_register_payment.py
  94. 27
      agriculture_management_odoo/wizard/animal_register_payment_views.xml
  95. 85
      agriculture_management_odoo/wizard/crop_report.py
  96. 35
      agriculture_management_odoo/wizard/crop_report_views.xml
  97. 82
      agriculture_management_odoo/wizard/pest_report.py
  98. 35
      agriculture_management_odoo/wizard/pest_report_views.xml
  99. 52
      agriculture_management_odoo/wizard/vehicle_register_payment.py
  100. 27
      agriculture_management_odoo/wizard/vehicle_register_payment_views.xml

49
agriculture_management_odoo/README.rst

@ -0,0 +1,49 @@
.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg
:target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3)
Agriculture Management
======================
In the Agriculture Management App, We can manage the agriculture to our own need.
We can also manage the rentals of vehicle and animals for agriculture purpose.
Configuration
=============
* No additional configurations needed
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
License
-------
General Public License, Version 3 (LGPL v3).
(https://www.gnu.org/licenses/lgpl-3.0-standalone.html)
Credits
-------
* Developers: (V15) Vyshnav AR,
(V14) Ayana KP,
Contact : odoo@cybrosys.com
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

23
agriculture_management_odoo/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import models
from . import wizard

72
agriculture_management_odoo/__manifest__.py

@ -0,0 +1,72 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': 'Agriculture Management',
'version': '14.0.1.0.0',
'category': 'Industries',
'summary': """ We Can Easily Manage the Agriculture to Our Own Need.""",
'description': """ In the Agriculture Management App, We can manage the "
"agriculture to our own need.We can also manage the rentals of vehicle and
animals for agriculture purpose.""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'depends': ['fleet','account'],
'data': [
'security/agriculture_management_groups.xml',
'security/crop_request_security.xml',
'security/ir.model.access.csv',
'data/ir_sequence_data.xml',
'report/crop_request_reports.xml',
'report/pest_request_reports.xml',
'report/crop_request_templates.xml',
'report/pest_request_templates.xml',
'report/crop_vehicle_templates.xml',
'report/crop_animal_templates.xml',
'report/crop_animal_reports.xml',
'wizard/crop_report_views.xml',
'wizard/pest_report_views.xml',
'wizard/animal_register_payment_views.xml',
'wizard/vehicle_register_payment_views.xml',
'views/seed_detail_views.xml',
'views/animal_detail_views.xml',
'views/location_detail_views.xml',
'views/vehicle_detail_views.xml',
'views/fleet_vehicle_views.xml',
'views/farmer_detail_views.xml',
'views/pest_request_views.xml',
'views/pest_detail_views.xml',
'views/damage_loss_views.xml',
'views/crop_request_views.xml',
'views/agriculture_tag_views.xml',
'views/vehicle_rental_views.xml',
'views/animal_rental_views.xml',
'report/crop_vehicle_reports.xml',
'views/agriculture_management_menus.xml',
],
'images': ['static/description/banner.png'],
'license': 'LGPL-3',
'installable': True,
'auto_install': False,
'application': True,
}

19
agriculture_management_odoo/data/ir_sequence_data.xml

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<data noupdate="1">
<!-- Record for creating sequence in pest request model-->
<record id="seq_pesticide" model="ir.sequence">
<field name="name">Pest Request</field>
<field name="code">pest.request</field>
<field name="prefix">PEST/REQ/</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<!-- Record for creating sequence in crop request model-->
<record id="seq_crop" model="ir.sequence">
<field name="name">Crop Request</field>
<field name="code">crop.request</field>
<field name="prefix">CROP/REQ/</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
</data>

6
agriculture_management_odoo/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <agriculture_management_odoo>
#### 30.05.2024
#### Version 14.0.1.0.0
#### ADD
- Initial commit for Agriculture Management

36
agriculture_management_odoo/models/__init__.py

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import animal_detail
from . import animal_rental
from . import agriculture_tag
from . import crop_animal
from . import crop_machinery
from . import crop_request
from . import damage_loss
from . import farmer_detail
from . import fleet_vehicle
from . import location_detail
from . import pest_detail
from . import pest_request
from . import seed_detail
from . import vehicle_detail
from . import vehicle_rental

52
agriculture_management_odoo/models/agriculture_tag.py

@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
from random import randint
class AgricultureTag(models.Model):
""" This model represents tags related to agriculture. Tags are used to
categorize and label various agricultural elements, products.
They facilitate the organization and grouping of agricultural information
for easier searching and classification. """
_name = "agriculture.tag"
_description = "Agriculture Tags"
def _get_default_color(self):
""" The function selects colors for tags, likely based on some
criteria or input, facilitating visual differentiation and
categorization."""
return randint(1, 11)
name = fields.Char(string='Tag Name', required=True, translate=True,
help='Tags are helpful for easy identification. Please '
'create appropriate tags.')
color = fields.Integer(string='Color', default=_get_default_color,
help='Color are helpful for Highlight tags . Please'
'choose different colors for differed tags')
_sql_constraints = [
# Partial constraint, complemented by unique tag and name.
# useful to keep because it provides a proper error message when a
# violation occurs
('name_uniq', 'unique (name)', "Tag name already exists !"),
]

62
agriculture_management_odoo/models/animal_detail.py

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class AnimalDetail(models.Model):
"""This model represents comprehensive details about animals involved
in agricultural management. It provides a structured way to store
information related to various animal breeds and their attributes."""
_name = 'animal.detail'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = "Animal Details in Agriculture Management"
_rec_name = 'breed'
image = fields.Binary(string='Image', help='Upload images of animals',
tracking=True)
breed = fields.Char(string='Breed', help='Mention the breed of animal',
required=True, tracking=True)
age = fields.Char(string='Age', help='Mention the age of animal',
required=True, tracking=True)
state = fields.Selection(
[('available', 'Available'), ('not_available', 'Not Available')],
default="available", help='The status whether this animal, whether it '
'is available or not',
string='Status', required=True, tracking=True)
note = fields.Text(string='Note', tracking=True,
help='If any notes or description about the animal')
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='This field represents the company associated with '
'the current user or environment.', default=lambda self: self.env.company)
def action_not_available(self):
"""Function for change state to not available"""
self.state = 'not_available'
def action_sold(self):
"""Function for change state to sold"""
self.state = 'sold'
def action_available(self):
"""Function for change state to available"""
self.state = 'available'

141
agriculture_management_odoo/models/animal_rental.py

@ -0,0 +1,141 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class AnimalRental(models.Model):
""" This model represents details about animal rental in the context of
crop requests. It provides a structured way to manage information related to
the rental of animals for agricultural purposes. """
_name = 'animal.rental'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = 'Animal Rental Details'
_rec_name = 'animal_id'
name = fields.Char(string='Reference', readonly=True,
default=lambda self: _('New'), copy=False,
help='Field for the sequence of renting entries of '
'animals')
farmer_id = fields.Many2one('farmer.detail', string='Farmer',
help='Select the farmer who needs animal.',
required=True, tracking=True)
animal_id = fields.Many2one('animal.detail', string='Animal',
help="Select the animal for renting",
required=True, tracking=True)
no_of_days = fields.Float(string='No of Days', tracking=True, store=True,
help="The number of days we want to rent that"
" animal.", compute='_compute_no_of_days')
start_date = fields.Date(string='Start Date', required=True, tracking=True,
help="Start date of rental period")
company_id = fields.Many2one('res.company', string='Company',
required=True, readonly=True,
default=lambda self: self.env.company,
help='This field represents the company '
'associated with the current user or '
'environment.')
currency_id = fields.Many2one(related='company_id.currency_id',
string='Currency', help='Currency of company')
amount = fields.Monetary(string='Amount', help="Rental amount per day",
required=True)
total_amount = fields.Monetary(string='Total Amount',
help="Total rental amount",
compute='_compute_total_amount',
currency_field='currency_id')
end_date = fields.Date(string='End Date', help="End date of rental period",
required=True, tracking=True)
note = fields.Text(string='Description', tracking=True,
help="Description for renting animal",
placeholder='Note')
state = fields.Selection(
[('draft', 'Draft'), ('confirm', 'Confirmed'), ('return', 'Returned'),
('paid', 'Paid'), ('cancel', 'Cancel')], string='Status',
default='draft', tracking=True, copy=False,
help="Status of renting the animal, Which is th status of the animal "
"rented?")
animal_paid_bool = fields.Boolean(string='Paid Bool', default=False,
copy=False)
@api.model
def create(self, values):
"""Function for creating new animal rental"""
if values.get('name', _('New')) == _('New'):
values['name'] = self.env['ir.sequence'].next_by_code(
'animal.rental') or _('New')
return super(AnimalRental, self).create(values)
@api.constrains('start_date', 'end_date')
def _check_dates(self):
for record in self:
if record.start_date and record.end_date:
if record.end_date < record.start_date:
raise ValidationError(
"End date cannot be before start date!")
@api.depends('no_of_days', 'amount')
def _compute_total_amount(self):
""" Function for compute total amount """
for record in self:
record.total_amount = record.no_of_days * record.amount
@api.depends('start_date', 'end_date')
def _compute_no_of_days(self):
"""Function for computing rental period based on start date and end
date"""
for record in self:
if record.start_date and record.end_date:
record.no_of_days = (record.end_date - record.start_date).days
def action_draft(self):
""" Function for change state of animal rental to draft """
self.state = 'draft'
def action_confirm(self):
""" Function for change state of crop request to confirm """
self.state = 'confirm'
def action_return(self):
""" Function for change state of crop request to cancel """
self.state = 'return'
def action_cancel(self):
""" Function for change state of crop request to cancel """
self.state = 'cancel'
def action_register_payment(self):
"""Method for viewing the wizard for register payment"""
view_id = self.env.ref(
'agriculture_management_odoo.animal_register_payment_wizard_view_form').id
return {
'name': 'Register Payment',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'animal.register.payment.wizard',
'views': [(view_id, 'form')],
'context': {
'default_farmer_id': self.farmer_id.id,
'default_rental_duration': self.no_of_days,
'default_amount': self.total_amount,
'default_ref': self.name
},
'target': 'new',
}

44
agriculture_management_odoo/models/crop_animal.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class CropAnimal(models.Model):
""" This model serves as a bridge to attach animal details to crop
request records. It provides a structured way to associate animal-related
information with specific crop requests."""
_name = 'crop.animal'
_description = 'Crop Animal Details'
dec_id = fields.Many2one('crop.request', string='Crop',
help='Select the crop id for this animal to be '
'used')
animal_id = fields.Many2one('animal.detail', string='Animal',
help="select animal used for this farming",
domain=[('state', '=', 'available')],
tracking=True)
qty = fields.Integer(string='Quantity',
help=" Number of animals used for farming")
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='This field represents the company associated with '
'the current user or environment.', default=lambda self: self.env.company)

43
agriculture_management_odoo/models/crop_machinery.py

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class CropMachinery(models.Model):
""" This model serves as a bridge to attach machinery details to crop
request records. It provides a structured way to associate machinery-related
information with specific crop requests."""
_name = 'crop.machinery'
_description = 'Crop Machinery Details'
des_id = fields.Many2one('crop.request', string='Crop id',
help="The crop id should be used to identify the "
"machinery is used which crop farming")
vehicle_id = fields.Many2one('vehicle.detail',
help="The vehicle that used for farming",
tracking=True, string='Vehicle',)
qty = fields.Integer(string='Quantity',
help="The Number of the vehicle that used for farming")
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='This field represents the company associated with'
' the current user or environment.', default=lambda self: self.env.company)

134
agriculture_management_odoo/models/crop_request.py

@ -0,0 +1,134 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models, _
class CropRequest(models.Model):
""" This model represents the creation of crop requests. It provides a
structured way to initiate and manage requests for crop cultivation tasks,
including associating animals, machinery, and other relevant details."""
_name = 'crop.request'
_inherit = ["mail.thread", 'mail.activity.mixin']
_description = "Crop Request Details"
_rec_name = 'ref'
ref = fields.Char(string='Reference', help="Reference id of crop requests",
copy=False, readonly=True, tracking=True,
default=lambda self: _('New'))
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='The company associated with the current user or '
'environment.', default=lambda self: self.env.company)
farmer_id = fields.Many2one('farmer.detail', string='Farmer',
help="Choose the farmer for the crop",
required=True, tracking=True)
seed_id = fields.Many2one('seed.detail', string='Crop',
help=" Select the seed details",
required=True, tracking=True)
location_id = fields.Many2one('location.detail',
string='Location', required=True,
help="Mention the Location details for "
"farming", tracking=True)
request_date = fields.Date(string='Request Date', tracking=True,
help="The Requested Date for crop",
default=fields.Date.context_today, required=True)
state = fields.Selection(
[('draft', 'Draft'), ('confirm', 'Confirmed'),
('ploughing', 'Ploughing'), ('sowing', 'Sowing'),
('manuring', 'Manuring'), ('irrigation', 'Irrigation'),
('weeding', 'Weeding'), ('harvest', 'Harvest'), ('storage', 'Storage'),
('cancel', 'Cancel')], group_expand='_group_expand_states',
string='Status', default='draft', tracking=True,
help="Mention the Status of crop, which stage now the crop is reached")
note = fields.Text(string='Note', tracking=True,
help="Description about crop and farming need to "
"remember")
machinery_ids = fields.One2many('crop.machinery',
'des_id', string='Machinery',
tracking=True, help="The machinery required"
"for this farming")
animal_ids = fields.One2many('crop.animal',
'dec_id', string='Animals',
tracking=True,
help="Animals used for this crop farming")
tag_ids = fields.Many2many('agriculture.tag', string='Tags',
tracking=True, help="Create appropriate"
" tags for the crop ")
user_id = fields.Many2one('res.users',
string='Responsible User',
help="Mention the user of the documents",
default=lambda self: self.env.user)
@api.model
def create(self, values):
"""Function for creating new crop requests"""
if values.get('ref', _('New')) == _('New'):
values['ref'] = self.env['ir.sequence'].next_by_code(
'crop.request') or _('New')
res = super(CropRequest, self).create(values)
return res
def action_draft(self):
""" Function for change state of crop request to draft """
self.state = 'draft'
def action_confirm(self):
""" Function for change state of crop request to confirm """
self.state = 'confirm'
def action_ploughing(self):
""" Function for change state of crop request to ploughing """
self.state = 'ploughing'
def action_sowing(self):
""" Function for change state of crop request to sowing """
self.state = 'sowing'
def action_manuring(self):
""" Function for change state of crop request to manuring """
self.state = 'manuring'
def action_irrigation(self):
""" Function for change state of crop request to irrigation """
self.state = 'irrigation'
def action_weeding(self):
""" Function for change state of crop request to weeding """
self.state = 'weeding'
def action_harvest(self):
""" Function for change state of crop request to harvest """
self.state = 'harvest'
def action_cancel(self):
""" Function for change state of crop request to cancel """
self.state = 'cancel'
def action_storage(self):
""" Function for change state of crop request to storage """
self.state = 'storage'
def _group_expand_states(self):
"""This function takes a list of states and expands them based on the
given domain and order."""
return [key for
key, val in type(self).state.selection]

62
agriculture_management_odoo/models/damage_loss.py

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class DamageLoss(models.Model):
"""This model represents details about damage and loss incidents.
It provides a structured way to record information related to damages and
losses incurred in the context of agricultural activities or other domains.
"""
_name = 'damage.loss'
_description = 'Damage Loss Details'
_inherit = ["mail.thread", 'mail.activity.mixin']
name = fields.Char(string='Name', help="Reason for damage or loss of crop ",
required=True, tracking=True)
farmer_id = fields.Many2one('farmer.detail',
help=" Mention the corresponding Farmer",
string='Farmer', required=True, tracking=True)
crop_id = fields.Many2one('crop.request',
help="Mention the corresponding crop",
string='Crop', required=True, tracking=True)
location_id = fields.Many2one('location.detail', tracking=True,
string='Location', help="The location of the "
"damage or loss takes place",
required=True)
damage_loss_type = fields.Selection([('damage', 'Damage'),
('loss', 'Loss')],
string='Damage/Loss Type',
help="Mention the damage or lass type",
required=True, tracking=True)
damage_loss_date = fields.Date(string='Damage/Loss Date',
help="The date in which damage occurs",
default=fields.Date.context_today,
required=True, tracking=True)
note = fields.Text(string='Damage/Loss Description', tracking=True,
help="Describe the details of damage/loss")
damage_loss_image = fields.Binary(string='Image', tracking=True,
help="Upload some images of damage/loss")
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True,help='The company associated with the current user or '
'environment.', default=lambda self: self.env.company)

53
agriculture_management_odoo/models/farmer_detail.py

@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models
class FarmerDetail(models.Model):
"""This model represents comprehensive details about farmers within the
context of agriculture management. It provides a structured way to store
information related to individual farmers, including their personal and
contact details. """
_name = 'farmer.detail'
_inherit = ["mail.thread", 'mail.activity.mixin']
_description = 'Farmer Details In Agriculture Management'
_rec_name = 'farmer_id'
farmer_id = fields.Many2one('res.partner', string='Farmer',
help=' Select the corresponding farmer',
required=True, tracking=True)
farmer_image = fields.Binary(string='Image', tracking=True,
help='Upload image of Farmer')
note = fields.Text(string='Notes', tracking=True,
help="Description regarding the farmer")
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='The company associated with the current user or '
'environment.',default=lambda self: self.env.company)
@api.onchange('farmer_id')
def _onchange_farmer_id(self):
"""Function for select image of farmer automatically when choosing
the farmer"""
for record in self:
if record.farmer_id:
record.farmer_image = record.farmer_id.image_1920

34
agriculture_management_odoo/models/fleet_vehicle.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class FleetVehicle(models.Model):
""" This model inherits from the 'fleet.vehicle' model to extend and
utilize the existing functionality for managing vehicle details. It provides
a structured way to access and utilize vehicle information within a fleet
management context."""
_inherit = "fleet.vehicle"
registration_date = fields.Date(string="Registration Date",
default=fields.Date.today, help="The"
"Registration date of the vehicle")

58
agriculture_management_odoo/models/location_detail.py

@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class LocationDetail(models.Model):
"""This model represents comprehensive details about locations within
the context of agriculture. It provides a structured way to store
information related to various geographic locations, such as farms, fields,
or storage areas. """
_name = 'location.detail'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = "Location Details In Agriculture Details"
_rec_name = 'location_name'
location_name = fields.Char(string='Location Name', required=True,
help='Give the name of Location where'
' farming done', tracking=True)
location_address = fields.Char(string='Location Address', required=True,
help='Give the full address of the location',
tracking=True)
location_area = fields.Float(string='Location Area', required=True,
help='The area of location', tracking=True)
location_area_unit = fields.Selection([('acres', 'Acres'),
('hectares', 'Hectares')],
string='Area Unit', tracking=True,
required=True,
help='Mention the units of area')
location_type = fields.Selection([('plot', 'Plot'),
('field', 'Field')], default="plot",
required=True, tracking=True,
help='Describe the type of farming area',
string='Location Type')
note = fields.Text(string='Note', tracking=True,
help='If any description for the location, mention here')
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='The company associated with the current user or '
'environment.', default=lambda self: self.env.company)

64
agriculture_management_odoo/models/pest_detail.py

@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models
class PestDetail(models.Model):
""" This model represents comprehensive details about pests within the
context of agriculture management. """
_name = 'pest.detail'
_inherit = ["mail.thread", 'mail.activity.mixin']
_description = 'Pest Details In Agriculture Management'
_rec_name = 'pest_name'
pest_name = fields.Char(string='Pesticide', tracking=True,
help="Mention the pesticide name", required=True)
pest_expiry_date = fields.Date(string='Expiry Date',
help=" Mention the pesticide expiry date",
required=True, tracking=True)
pest_description = fields.Text(string='Pest Description', tracking=True,
help="Brief description about the pesticide")
pest_image = fields.Binary(string='Image', tracking=True,
help="Upload the image of pesticide")
pest_cost = fields.Float(string='Cost', help="The cost of the pesticide",
required=True, tracking=True)
pest_quantity = fields.Integer(string='Quantity',
help="The quantity of pesticide purchased",
required=True, tracking=True)
total_cost = fields.Float(string='Total Cost', tracking=True,
help="The total cost of pesticide",
compute='_compute_total_cost', store=True)
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='The company associated with the current user or '
'environment.', default=lambda self: self.env.company)
currency_id = fields.Many2one('res.currency',
help="Currency of company", string='Currency',
default=lambda
self: self.env.user.company_id.currency_id,
tracking=True)
@api.depends('pest_cost', 'pest_quantity')
def _compute_total_cost(self):
"""Function for calculate total cost of pesticide """
for record in self:
record.total_cost = record.pest_cost * record.pest_quantity

112
agriculture_management_odoo/models/pest_request.py

@ -0,0 +1,112 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models, _
class PestRequest(models.Model):
""" This model represents requests related to pest management within the
context of agriculture. It provides a structured way to initiate and manage
requests for pest control measures, treatments, and interventions."""
_name = 'pest.request'
_inherit = ["mail.thread", 'mail.activity.mixin']
_description = 'Pest Request In Agriculture Management'
_rec_name = 'reference'
reference = fields.Char(string='Reference', help='Mention the details of '
'pesticide request',
copy=False, readonly=True, tracking=True,
default=lambda self: _('New'))
request_date = fields.Date(string='Request Date', tracking=True,
help='The date the pesticide request was sent.',
default=fields.Date.context_today, required=True)
farmer_id = fields.Many2one('res.partner', string='Farmer',
help='Mention the corresponding farmer that '
'request send', required=True,
tracking=True)
crop_id = fields.Many2one('crop.request', string='Crop',
help='Mention the corresponding crop the '
'pesticide needed', required=True,
tracking=True)
location_id = fields.Many2one('location.detail',
help='Location of details crop and farming',
tracking=True, string='Location')
pest_id = fields.Many2one('pest.detail', string='Pest',
help='Mention the pesticide name Required ',
required=True, tracking=True)
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='The company associated with the current user or '
'environment.', default=lambda self: self.env.company)
currency_id = fields.Many2one('res.currency', string='Currency',
help='Currency used by the company',
default=lambda
self: self.env.user.company_id.currency_id)
pest_quantity = fields.Integer(string='Pest Quantity', tracking=True,
help='The quantity of pesticide that is'
'required to be purchased',
required=True)
pest_cost = fields.Float(string='Pest Cost', required=True,
help="The unit price of the pesticide",
tracking=True, related='pest_id.pest_cost')
total_cost = fields.Float(string='Total Cost', tracking=True, store=True,
help="The total cost of the pesticide that was "
"purchased.", compute='_compute_total_cost')
disease = fields.Text(string='Disease', tracking=True, required=True,
help="The corresponding disease of crop")
note = fields.Text(string='Note', tracking=True,
help="Please describe any additional details here if "
"there is a need to mention additional data.")
state = fields.Selection(
[('draft', 'Draft'), ('pending', 'Pending'), ('approve', 'Approved'),
('rejected', 'Rejected')], help=" The status of pesticide request",
string='Status', default='draft', tracking=True)
def action_draft(self):
""" Function for change state of crop request to cancel """
self.state = 'draft'
def action_pending(self):
""" Function for change state of pest request to pending """
self.state = 'pending'
def action_approved(self):
""" Function for change state of pest request to approve """
self.state = 'approve'
def action_rejected(self):
""" Function for change state of pest request to rejected """
self.state = 'rejected'
@api.depends('pest_cost', 'pest_quantity')
def _compute_total_cost(self):
"""Function for calculate total cost of pesticide"""
for record in self:
record.total_cost = record.pest_cost * record.pest_quantity
@api.model
def create(self, values):
""" Function for create new pest request """
if values.get('reference', _('New')) == _('New'):
values['reference'] = self.env['ir.sequence'].next_by_code(
'pest.request') or _('New')
res = super(PestRequest, self).create(values)
return res

55
agriculture_management_odoo/models/seed_detail.py

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class SeedDetail(models.Model):
"""This model represents comprehensive details about seeds within the
context of agriculture management. It provides a structured way to store
information related to various types of seeds used for planting and
cultivation."""
_name = 'seed.detail'
_inherit = ["mail.thread", 'mail.activity.mixin']
_description = "Seed Details In Agriculture Management"
name = fields.Char(string='Name', help='Mention the name of the breed of '
'crop used for farming',
required=True, tracking=True)
quantity = fields.Integer(string='Quantity', required=True, tracking=True,
help='Mention Quantity or seed purchased for '
'farming')
unit = fields.Selection([('kg', 'Kilograms'), ('gms', 'Grams')],
string='Unit', required=True, tracking=True,
help='Mention the quantity of seed purchased for '
'farming')
seed_type = fields.Selection(
[('registered', 'Registered'), ('breeder', 'Breeder'),
('foundation', 'Foundation'),
('certified', 'Certified')], string='Type', tracking=True,
help='Mention the status of seed purchased for farming', required=True)
note = fields.Text(string='Note', tracking=True,
help="Please describe any additional details here if "
"there is a need to mention additional data.")
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='The company associated with the current user or '
'environment.', default=lambda self: self.env.company)

79
agriculture_management_odoo/models/vehicle_detail.py

@ -0,0 +1,79 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models
from datetime import datetime
class VehicleDetail(models.Model):
""" This model represents comprehensive details about vehicles within
the context of agriculture management. It provides a structured way to
store information related to various types of vehicles used for
transportation and agricultural operations."""
_name = 'vehicle.detail'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = "Vehicle Details IN Agriculture Management"
_rec_name = 'name'
name = fields.Char(string='Name', tracking=True, readonly=True,
help="Mention the name of vehicle chose",
compute='_compute_vehicle_name')
vehicle_main_id = fields.Many2one('fleet.vehicle',
help="Select the vehicle that used for "
"farming", string='Vehicle',
required=True,
tracking=True, domain=(
[('state_id', '=', 'Registered')]))
vehicle_type = fields.Selection(
[('tractor', 'Tractor'), ('harvester', 'Harvester'),
('pickup', 'Pickup'), ('other', 'Other')],
string='Vehicle Type', required=True,
help=' Mention the status of vehicle ', tracking=True)
vehicle_model = fields.Char(string='Model Year', store=True,
help='Mention the model of selected model',
compute='_compute_vehicle_model', tracking=True)
note = fields.Text(string='Note', tracking=True,
help="Please describe any additional details here if "
"there is a need to mention additional data.")
company_id = fields.Many2one(
'res.company', string='Company', required=True,
readonly=True, help='The company associated with the current user or '
'environment.', default=lambda self: self.env.company)
@api.depends("vehicle_main_id")
def _compute_vehicle_name(self):
"""Function for auto update the name of vehicle based on model and
brand"""
for ref in self:
ref.name = str(
ref.vehicle_main_id.model_id.brand_id.name or " ") + "/" + str(
ref.vehicle_main_id.model_id.name or " ") + "/" + str(
ref.vehicle_main_id.license_plate or " ")
@api.depends('vehicle_main_id')
def _compute_vehicle_model(self):
""" Function for selecting model of vehicle based on vehicle id"""
for ref in self:
ref.vehicle_model = False
if ref.vehicle_main_id.registration_date:
date = datetime.strptime(
str(ref.vehicle_main_id.registration_date), '%Y-%m-%d')
ref.vehicle_model = str(date.year)

141
agriculture_management_odoo/models/vehicle_rental.py

@ -0,0 +1,141 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class VehicleRental(models.Model):
"""This model represents details about vehicle rentals within the
context of agriculture management. It provides a structured way to manage
information related to renting vehicles for agricultural tasks."""
_name = 'vehicle.rental'
_inherit = ['mail.thread', 'mail.activity.mixin']
_description = 'Vehicle Rental Details'
_rec_name = 'vehicle_id'
name = fields.Char(string='Reference', readonly=True,
default=lambda self: _('New'), copy=False,
help='Field for the sequence of renting entries of '
'vehicles.')
farmer_id = fields.Many2one('farmer.detail', string='Farmer',
help='Select the farmer who needs vehicle.',
required=True, tracking=True)
vehicle_id = fields.Many2one('vehicle.detail',
help="Select the vehicle that used for farming",
string='Vehicle', required=True, tracking=True)
no_of_days = fields.Float(string='No of Days', compute='_compute_no_of_days',
help="The number of days we want to rent that "
"vehicle.", tracking=True, store=True)
start_date = fields.Date(string='Start Date', tracking=True,
help=" Start date of rental period", required=True)
end_date = fields.Date(string='End Date', help="End date of rental period",
required=True, tracking=True)
company_id = fields.Many2one('res.company', string='Company',
required=True, readonly=True,
help='The company associated with the current '
'user or environment.',
default=lambda self: self.env.company)
currency_id = fields.Many2one(related='company_id.currency_id',
string='Currency', help='Currency of company')
amount = fields.Monetary(string='Amount', help="Rental amount per day",
required=True)
total_amount = fields.Monetary(string='Total Amount',
help="Total rental amount",
compute='_compute_total_amount',
currency_field='currency_id')
note = fields.Text(string='Description', tracking=True,
help="Please describe any additional details here if "
"there is a need to mention additional data.",
placeholder='Note')
state = fields.Selection(
[('draft', 'Draft'), ('confirm', 'Confirmed'), ('return', 'Returned'),
('paid', 'Paid'), ('cancel', 'Cancel')], string='Status',
default='draft', tracking=True, copy=False,
help="Status of renting the vehicle, Which is th status of the vehicle "
"rented?")
vehicle_paid_bool = fields.Boolean(string='Paid Bool', default=False,
copy=False)
@api.model
def create(self, values):
"""Function for creating new animal rental"""
if values.get('name', _('New')) == _('New'):
values['name'] = self.env['ir.sequence'].next_by_code(
'vehicle.rental') or _('New')
return super(VehicleRental, self).create(values)
@api.constrains('start_date', 'end_date')
def _check_dates(self):
for record in self:
if record.start_date and record.end_date:
if record.end_date < record.start_date:
raise ValidationError(
"End date cannot be before start date!")
@api.depends('no_of_days', 'amount')
def _compute_total_amount(self):
""" Function for compute total amount """
for record in self:
record.total_amount = record.no_of_days * record.amount
@api.depends('start_date', 'end_date')
def _compute_no_of_days(self):
"""Function for calculating the rental period based start date and
end date"""
for record in self:
if record.start_date and record.end_date:
record.no_of_days = (record.end_date - record.start_date).days
def action_draft(self):
""" Function for change state of animal rental to draft """
self.state = 'draft'
def action_confirm(self):
""" Function for change state of crop request to confirm """
self.state = 'confirm'
def action_return(self):
""" Function for change state of crop request to cancel """
self.state = 'return'
def action_cancel(self):
""" Function for change state of crop request to cancel """
self.state = 'cancel'
def action_register_payment(self):
"""Method for viewing the wizard for register payment"""
view_id = self.env.ref(
'agriculture_management_odoo.vehicle_register_payment_wizard_view_form').id
return {
'name': 'Register Payment',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'vehicle.register.payment.wizard',
'views': [(view_id, 'form')],
'context': {
'default_farmer_id': self.farmer_id.id,
'default_rental_duration': self.no_of_days,
'default_amount': self.total_amount,
'default_ref': self.name
},
'target': 'new',
}

13
agriculture_management_odoo/report/crop_animal_reports.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- The record of animals report action -->
<record id="report_animal_crop" model="ir.actions.report">
<field name="name">Animal Crop Report</field>
<field name="model">crop.request</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">agriculture_management_odoo.animal_crop</field>
<field name="report_file">agriculture_management_odoo.animal_crop</field>
<field name="binding_model_id" ref="model_crop_request"/>
<field name="binding_type">report</field>
</record>
</odoo>

72
agriculture_management_odoo/report/crop_animal_templates.xml

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- PDF Report Template for rented animal for farming report-->
<template id="animal_crop">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="web.external_layout">
<div class="page">
<center>
<h1>Crop Animal Report</h1>
</center>
<br/>
<div t-if="doc.ref"
style="font-family: 'Montserrat', sans-serif !important;font-weight: bold;font-size: 1.3rem">
<p>Reference :
<t t-esc="doc.ref"/>
</p>
</div>
<div t-if="doc.farmer_id.farmer_id.name"
style="font-family: 'Montserrat', sans-serif !important;font-weight: bold;font-size: 1.3rem">
<p>Farmer :
<t t-esc="doc.farmer_id.farmer_id.name"/>
</p>
</div>
<div t-if="doc.seed_id.name"
style="font-family: 'Montserrat', sans-serif !important;font-weight: bold;font-size: 1.3rem">
<p>Crop :
<t t-esc="doc.seed_id.name"/>
</p>
</div>
<div t-if="doc.location_id.location_name"
style="font-family: 'Montserrat', sans-serif !important;font-weight: bold;font-size: 1.3rem">
<p>Location :
<t t-esc="doc.location_id.location_name"/>
</p>
</div>
<br>
</br>
<style>
table, thead, th, td, tr, tbody {
border: 1px solid black;
border-collapse: collapse;
padding: 5px;
}
</style>
<table class="table table-bordered"
style="border: 2px solid black;text-align: center !important;">
<thead>
<tr>
<strong>
<th>Animal</th>
<th>Quantity</th>
</strong>
</tr>
</thead>
<tbody>
<tr t-foreach="doc.animal_ids" t-as="line">
<td>
<span t-esc="line.animal_id.breed"/>
</td>
<td>
<span t-esc="line.qty"/>
</td>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
</template>
</odoo>

13
agriculture_management_odoo/report/crop_request_reports.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- Action for report of crop request -->
<record id="action_crop_request_report" model="ir.actions.report">
<field name="name">Crop Report</field>
<field name="model">crop.report</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">agriculture_management_odoo.report_crop_details</field>
<field name="report_file">agriculture_management_odoo.report_crop_details</field>
<field name="binding_model_id" ref="model_crop_report"/>
<field name="binding_type">report</field>
</record>
</odoo>

90
agriculture_management_odoo/report/crop_request_templates.xml

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- PDF Report Template of crop details -->
<template id="report_crop_details">
<t t-call="web.html_container">
<t t-call="web.external_layout">
<div class="page">
<div class="oe_structure"/>
<div class="text-center">
<h1>Crop Report</h1>
</div>
<table class="table table-condensed">
<tr>
<td>FROM DATE</td>
<td>:</td>
<td>
<t t-if="form.get('date_from')">
<t t-esc="form['date_from']"/>
</t>
</td>
</tr>
<tr>
<td>TO DATE</td>
<td>:</td>
<td>
<t t-if="form.get('date_to')">
<t t-esc="form['date_to']"/>
</t>
</td>
</tr>
<table class="table table-condensed">
<thead>
<tr>
<th style="text-align:left;color:black!important;">
Reference
</th>
<th style="text-align:left;color:black!important;">
Farmer
</th>
<th style="text-align:left;color:black!important;">
Crop
</th>
<th style="text-align:left;color:black!important;">
Request Date
</th>
<th style="text-align:left;color:black!important;">
Location
</th>
<th style="text-align:left;color:black!important;">
Status
</th>
</tr>
</thead>
<tbody>
<t>
<tr t-foreach="record" t-as="val">
<td>
<span t-att-style="style"
t-esc="val[0]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[1]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[2]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[3]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[5]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[4]"/>
</td>
</tr>
</t>
</tbody>
</table>
</table>
</div>
</t>
</t>
</template>
</odoo>

13
agriculture_management_odoo/report/crop_vehicle_reports.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Report action for crop vehicle -->
<record id="report_vehicle_crop" model="ir.actions.report">
<field name="name">Vehicle Crop Report</field>
<field name="model">crop.request</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">agriculture_management_odoo.vehicle_crop</field>
<field name="report_file">agriculture_management_odoo.vehicle_crop</field>
<field name="binding_model_id" ref="model_crop_request"/>
<field name="binding_type">report</field>
</record>
</odoo>

71
agriculture_management_odoo/report/crop_vehicle_templates.xml

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Template for PDF Report of vehicles in crops farming -->
<template id="vehicle_crop">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="web.external_layout">
<div class="page">
<center>
<h1>Crop Vehicle Report</h1>
</center>
<br/>
<div t-if="doc.ref"
style="font-family: 'Montserrat', sans-serif !important;font-weight: bold;font-size: 1.3rem">
<p>Reference :
<t t-esc="doc.ref"/>
</p>
</div>
<div t-if="doc.farmer_id.farmer_id.name"
style="font-family: 'Montserrat', sans-serif !important;font-weight: bold;font-size: 1.3rem">
<p>Farmer :
<t t-esc="doc.farmer_id.farmer_id.name"/>
</p>
</div>
<div t-if="doc.seed_id.name"
style="font-family: 'Montserrat', sans-serif !important;font-weight: bold;font-size: 1.3rem">
<p>Crop :
<t t-esc="doc.seed_id.name"/>
</p>
</div>
<div t-if="doc.location_id.location_name"
style="font-family: 'Montserrat', sans-serif !important;font-weight: bold;font-size: 1.3rem">
<p>Location :
<t t-esc="doc.location_id.location_name"/>
</p>
</div>
<br/>
<style>
table, thead, th, td, tr, tbody {
border: 1px solid black;
border-collapse: collapse;
padding: 5px;
}
</style>
<table class="table table-sm"
style="border: 2px solid black">
<thead>
<tr>
<strong>
<th>Vehicle</th>
<th>Quantity</th>
</strong>
</tr>
</thead>
<tbody>
<tr t-foreach="doc.machinery_ids" t-as="line">
<td>
<span t-esc="'%s/%s/%s' % (line.vehicle_id.vehicle_main_id.model_id.name,line.vehicle_id.vehicle_main_id.model_id.name,line.vehicle_id.vehicle_main_id.license_plate)"/>
</td>
<td>
<span t-esc="line.qty"/>
</td>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
</template>
</odoo>

13
agriculture_management_odoo/report/pest_request_reports.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- Record for actions of pesticide PDF report-->
<record id="pest_request_report_action" model="ir.actions.report">
<field name="name">pest Report</field>
<field name="model">pest.report</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">agriculture_management_odoo.report_pest_detail</field>
<field name="report_file">agriculture_management_odoo.report_pest_detail</field>
<field name="binding_model_id" ref="model_pest_report"/>
<field name="binding_type">report</field>
</record>
</odoo>

111
agriculture_management_odoo/report/pest_request_templates.xml

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- PDF Report Template for pesticide purchased in farming -->
<template id="report_pest_detail">
<t t-call="web.html_container">
<t t-call="web.external_layout">
<div class="page">
<div class="oe_structure"/>
<div class="text-center">
<h1>Pest Report</h1>
</div>
<table class="table table-condensed">
<tr>
<td>FROM DATE</td>
<td>:</td>
<td>
<t t-if="form.get('date_from')">
<t t-esc="form['date_from']"/>
</t>
</td>
</tr>
<tr>
<td>TO DATE</td>
<td>:</td>
<td>
<t t-if="form.get('date_to')">
<t t-esc="form['date_to']"/>
</t>
</td>
</tr>
<table class="table table-condensed">
<thead>
<tr>
<th style="text-align:left;color:black!important;">
Reference
</th>
<th style="text-align:left;color:black!important;">
Farmer
</th>
<th style="text-align:left;color:black!important;">
Crop
</th>
<th style="text-align:left;color:black!important;">
Disease
</th>
<th style="text-align:left;color:black!important;">
Pest
</th>
<th style="text-align:left;color:black!important;">
Quantity
</th>
<th style="text-align:left;color:black!important;">
Cost
</th>
<th style="text-align:left;color:black!important;">
Total
</th>
<th style="text-align:left;color:black!important;">
Status
</th>
</tr>
</thead>
<tbody>
<t>
<tr t-foreach="record" t-as="val">
<td>
<span t-att-style="style"
t-esc="val[0]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[1]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[2]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[3]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[4]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[6]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[5]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[7]"/>
</td>
<td>
<span t-att-style="style"
t-esc="val[8]"/>
</td>
</tr>
</t>
</tbody>
</table>
</table>
</div>
</t>
</t>
</template>
</odoo>

17
agriculture_management_odoo/security/agriculture_management_groups.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- User groups for Agriculture Management-->
<record id="module_agriculture_management_odoo" model="ir.module.category">
<field name="name">Agriculture Management</field>
<field name="description">Category for Agriculture</field>
</record>
<record id="group_agriculture_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="module_agriculture_management_odoo"/>
</record>
<record id="group_agriculture_admin" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="module_agriculture_management_odoo"/>
<field name="implied_ids" eval="[(4, ref('group_agriculture_user'))]"/>
</record>
</odoo>

85
agriculture_management_odoo/security/crop_request_security.xml

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Security rules for crop request -->
<record id="rule_own_doc" model="ir.rule">
<field name="name">View Own Docs</field>
<field ref="model_crop_request" name="model_id"/>
<field name="domain_force">['|',('user_id', '=', user.id),('create_uid',
'=', user.id)]
</field>
<field name="groups"
eval="[(4, ref('agriculture_management_odoo.group_agriculture_user'))]"/>
</record>
<record id="rule_all_doc" model="ir.rule">
<field name="name">View All Docs</field>
<field ref="model_crop_request" name="model_id"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups"
eval="[(4, ref('agriculture_management_odoo.group_agriculture_admin'))]"/>
</record>
<record id="crop_request_comp_rule" model="ir.rule">
<field name="name">Crop Request multi company rule</field>
<field name="model_id" ref="model_crop_request"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="animal_rental_comp_rule" model="ir.rule">
<field name="name">Animal Rental multi company rule</field>
<field name="model_id" ref="model_animal_rental"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="animal_details_comp_rule" model="ir.rule">
<field name="name">Animal Details multi company rule</field>
<field name="model_id" ref="model_animal_detail"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="crop_animal_comp_rule" model="ir.rule">
<field name="name">Crop Animal multi company rule</field>
<field name="model_id" ref="model_crop_animal"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="crop_machinery_comp_rule" model="ir.rule">
<field name="name">Crop Machinery multi company rule</field>
<field name="model_id" ref="model_crop_machinery"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="damage_loss_comp_rule" model="ir.rule">
<field name="name">Damage Loss multi company rule</field>
<field name="model_id" ref="model_damage_loss"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="farmer_detail_comp_rule" model="ir.rule">
<field name="name">Farmer Detail multi company rule</field>
<field name="model_id" ref="model_farmer_detail"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="location_detail_comp_rule" model="ir.rule">
<field name="name">Location Detail multi company rule</field>
<field name="model_id" ref="model_location_detail"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="pest_detail_comp_rule" model="ir.rule">
<field name="name">Pest Detail multi company rule</field>
<field name="model_id" ref="model_pest_detail"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="pest_request_comp_rule" model="ir.rule">
<field name="name">Pest Request multi company rule</field>
<field name="model_id" ref="model_pest_request"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="seed_detail_comp_rule" model="ir.rule">
<field name="name">Seed Detail multi company rule</field>
<field name="model_id" ref="model_seed_detail"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="vehicle_detail_comp_rule" model="ir.rule">
<field name="name">Vehicle Detail multi company rule</field>
<field name="model_id" ref="model_vehicle_detail"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
<record id="vehicle_rental_comp_rule" model="ir.rule">
<field name="name">Vehicle Rental multi company rule</field>
<field name="model_id" ref="model_vehicle_rental"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
</record>
</odoo>

35
agriculture_management_odoo/security/ir.model.access.csv

@ -0,0 +1,35 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_crop_request_admin,access.crop.request,model_crop_request,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_crop_request_user,access.crop.request,model_crop_request,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_seed_detail_admin,access.seed.detail,model_seed_detail,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_seed_detail_user,access.seed.detail,model_seed_detail,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_animal_detail_admin,access.animal.detail,model_animal_detail,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_animal_detail,access.animal.detail,model_animal_detail,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_location_detail_admin,access.location.detail,model_location_detail,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_location_detail,access.location.detail,model_location_detail,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_vehicle_detail_admin,access.vehicle.detail,model_vehicle_detail,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_vehicle_detail,access.vehicle.detail,model_vehicle_detail,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_farmer_detail_admin,access.farmer.detail,model_farmer_detail,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_farmer_detail,access.farmer.detail,model_farmer_detail,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_pest_request,_adminaccess.pest.request,model_pest_request,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_pest_request,access.pest.request,model_pest_request,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_pest_detail_admin,access.pest.detail,model_pest_detail,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_pest_detail,access.pest.detail,model_pest_detail,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_damage_loss_admin,access.damage.loss,model_damage_loss,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_damage_loss,access.damage.loss,model_damage_loss,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_crop_machinery_admin,access.crop.machinery,model_crop_machinery,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_crop_machinery,access.crop.machinery,model_crop_machinery,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_crop_animal_admin,access.crop.animal,model_crop_animal,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_crop_animal,access.crop.animal,model_crop_animal,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_agriculture_tag_admin,access.agriculture.tag,model_agriculture_tag,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_agriculture_tag,access.agriculture.tag,model_agriculture_tag,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_vehicle_rental_admin,access.vehicle.rental,model_vehicle_rental,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_vehicle_rental,access.vehicle.rental,model_vehicle_rental,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_animal_rental_admin,access.animal.rental,model_animal_rental,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_animal_rental,access.animal.rental,model_animal_rental,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_crop_report_admin,access.crop.report,model_crop_report,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_crop_report,access.crop.report,model_crop_report,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_pest_report_admin,access.pest.report,model_pest_report,agriculture_management_odoo.group_agriculture_admin,1,1,1,1
access_pest_report,access.pest.report,model_pest_report,agriculture_management_odoo.group_agriculture_user,1,1,1,0
access_animal_register_payment_wizard,access.animal.register.payment.wizard,model_animal_register_payment_wizard,base.group_user,1,1,1,1
access_vehicle_register_payment_wizard,access.vehicle.register.payment.wizard,model_vehicle_register_payment_wizard,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_crop_request_admin access.crop.request model_crop_request agriculture_management_odoo.group_agriculture_admin 1 1 1 1
3 access_crop_request_user access.crop.request model_crop_request agriculture_management_odoo.group_agriculture_user 1 1 1 0
4 access_seed_detail_admin access.seed.detail model_seed_detail agriculture_management_odoo.group_agriculture_admin 1 1 1 1
5 access_seed_detail_user access.seed.detail model_seed_detail agriculture_management_odoo.group_agriculture_user 1 1 1 0
6 access_animal_detail_admin access.animal.detail model_animal_detail agriculture_management_odoo.group_agriculture_admin 1 1 1 1
7 access_animal_detail access.animal.detail model_animal_detail agriculture_management_odoo.group_agriculture_user 1 1 1 0
8 access_location_detail_admin access.location.detail model_location_detail agriculture_management_odoo.group_agriculture_admin 1 1 1 1
9 access_location_detail access.location.detail model_location_detail agriculture_management_odoo.group_agriculture_user 1 1 1 0
10 access_vehicle_detail_admin access.vehicle.detail model_vehicle_detail agriculture_management_odoo.group_agriculture_admin 1 1 1 1
11 access_vehicle_detail access.vehicle.detail model_vehicle_detail agriculture_management_odoo.group_agriculture_user 1 1 1 0
12 access_farmer_detail_admin access.farmer.detail model_farmer_detail agriculture_management_odoo.group_agriculture_admin 1 1 1 1
13 access_farmer_detail access.farmer.detail model_farmer_detail agriculture_management_odoo.group_agriculture_user 1 1 1 0
14 access_pest_request _adminaccess.pest.request model_pest_request agriculture_management_odoo.group_agriculture_admin 1 1 1 1
15 access_pest_request access.pest.request model_pest_request agriculture_management_odoo.group_agriculture_user 1 1 1 0
16 access_pest_detail_admin access.pest.detail model_pest_detail agriculture_management_odoo.group_agriculture_admin 1 1 1 1
17 access_pest_detail access.pest.detail model_pest_detail agriculture_management_odoo.group_agriculture_user 1 1 1 0
18 access_damage_loss_admin access.damage.loss model_damage_loss agriculture_management_odoo.group_agriculture_admin 1 1 1 1
19 access_damage_loss access.damage.loss model_damage_loss agriculture_management_odoo.group_agriculture_user 1 1 1 0
20 access_crop_machinery_admin access.crop.machinery model_crop_machinery agriculture_management_odoo.group_agriculture_admin 1 1 1 1
21 access_crop_machinery access.crop.machinery model_crop_machinery agriculture_management_odoo.group_agriculture_user 1 1 1 0
22 access_crop_animal_admin access.crop.animal model_crop_animal agriculture_management_odoo.group_agriculture_admin 1 1 1 1
23 access_crop_animal access.crop.animal model_crop_animal agriculture_management_odoo.group_agriculture_user 1 1 1 0
24 access_agriculture_tag_admin access.agriculture.tag model_agriculture_tag agriculture_management_odoo.group_agriculture_admin 1 1 1 1
25 access_agriculture_tag access.agriculture.tag model_agriculture_tag agriculture_management_odoo.group_agriculture_user 1 1 1 0
26 access_vehicle_rental_admin access.vehicle.rental model_vehicle_rental agriculture_management_odoo.group_agriculture_admin 1 1 1 1
27 access_vehicle_rental access.vehicle.rental model_vehicle_rental agriculture_management_odoo.group_agriculture_user 1 1 1 0
28 access_animal_rental_admin access.animal.rental model_animal_rental agriculture_management_odoo.group_agriculture_admin 1 1 1 1
29 access_animal_rental access.animal.rental model_animal_rental agriculture_management_odoo.group_agriculture_user 1 1 1 0
30 access_crop_report_admin access.crop.report model_crop_report agriculture_management_odoo.group_agriculture_admin 1 1 1 1
31 access_crop_report access.crop.report model_crop_report agriculture_management_odoo.group_agriculture_user 1 1 1 0
32 access_pest_report_admin access.pest.report model_pest_report agriculture_management_odoo.group_agriculture_admin 1 1 1 1
33 access_pest_report access.pest.report model_pest_report agriculture_management_odoo.group_agriculture_user 1 1 1 0
34 access_animal_register_payment_wizard access.animal.register.payment.wizard model_animal_register_payment_wizard base.group_user 1 1 1 1
35 access_vehicle_register_payment_wizard access.vehicle.register.payment.wizard model_vehicle_register_payment_wizard base.group_user 1 1 1 1

BIN
agriculture_management_odoo/static/description/assets/icons/check.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
agriculture_management_odoo/static/description/assets/icons/chevron.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

BIN
agriculture_management_odoo/static/description/assets/icons/cogs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
agriculture_management_odoo/static/description/assets/icons/consultation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
agriculture_management_odoo/static/description/assets/icons/ecom-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

BIN
agriculture_management_odoo/static/description/assets/icons/education-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

BIN
agriculture_management_odoo/static/description/assets/icons/hotel-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

BIN
agriculture_management_odoo/static/description/assets/icons/license.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
agriculture_management_odoo/static/description/assets/icons/lifebuoy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
agriculture_management_odoo/static/description/assets/icons/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
agriculture_management_odoo/static/description/assets/icons/manufacturing-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

BIN
agriculture_management_odoo/static/description/assets/icons/pos-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

BIN
agriculture_management_odoo/static/description/assets/icons/puzzle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

BIN
agriculture_management_odoo/static/description/assets/icons/restaurant-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
agriculture_management_odoo/static/description/assets/icons/service-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

BIN
agriculture_management_odoo/static/description/assets/icons/trading-black.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

BIN
agriculture_management_odoo/static/description/assets/icons/training.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

BIN
agriculture_management_odoo/static/description/assets/icons/update.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
agriculture_management_odoo/static/description/assets/icons/user.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

BIN
agriculture_management_odoo/static/description/assets/icons/wrench.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
agriculture_management_odoo/static/description/assets/modules/module_image (1).png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
agriculture_management_odoo/static/description/assets/modules/module_image (2).png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
agriculture_management_odoo/static/description/assets/modules/module_image (4).png

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
agriculture_management_odoo/static/description/assets/modules/module_image.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
agriculture_management_odoo/static/description/assets/modules/module_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/agr_conf_3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/agr_crop_4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/agr_manager_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/agr_user_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/agr_vehicle_repor_6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/agr_vehicle_report_print_5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/animal_rental_10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/animal_repor_8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/animal_report_print_7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/damage_loss_11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/main_rep_pdf_out_16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/main_report_14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/pest_details_13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/pest_req_12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/rental_veh_9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
agriculture_management_odoo/static/description/assets/screenshots/report_wiz_15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
agriculture_management_odoo/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
agriculture_management_odoo/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

683
agriculture_management_odoo/static/description/index.html

@ -0,0 +1,683 @@
<div class="container" style="padding: 1rem !important; margin-bottom: 1rem !important;">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between" style="border-bottom: 1px solid #d5d5d5;">
<div class="my-3">
<img src="./assets/icons/logo.png" style="width: auto !important; height: 40px !important;">
</div>
<div class="my-3 d-flex align-items-center">
<div
style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
</div>
</div>
<div class="container" style="padding: 0rem 1.5rem 4rem !important">
<div class="row" style="height: 900px !important;">
<div class="col-sm-12 col-md-12 col-lg-12"
style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;">
<h1
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;">
Agriculture Management</h1>
<p
style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important; font-size: 1.4rem !important; text-align: center !important;">
A Module For Managing Agriculture.
</p>
<img src="./assets/screenshots/hero.gif" class="img-responsive" width="100%" height="auto" />
</div>
</div>
<div class="row">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-compass mr-2"></i>Explore this module
</h2>
<div class="row">
<div class="col-md-6">
<a href="#overview" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Overview</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
Learn more about this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#features" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Features</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
View features of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#screenshots" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Screenshots</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
See key screenshots of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="row" id="overview">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-pie-chart mr-2"></i>Overview
</h2>
</div>
<div class="col-mg-12 pl-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;">
In the Agriculture Management App, We can manage the agriculture to our own need.
We can also manage the rentals of vehicle and animals for agriculture purpose.
We can also customize and hide the fields.</p>
</div>
</div>
<div class="row" id="features">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-star mr-2"></i>Features
</h2>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Set the Manager and User in settings.</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Crop Requests.</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Rentals for Vehicles and Animals.</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Damage/Loss Report.</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Pesticide Request and Can View the Pesticide Details.</h4>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Total Crop Request Report.</h4>
</div>
</div>
</div>
<div class="row" id="screenshots">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-image mr-2"></i>Screenshots
</h2>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Provide User Access</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
In Settings, user can have Manager access which is overall access and another one is User access.
layout</p>
<img src="assets/screenshots/agr_manager_1.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<img src="assets/screenshots/agr_user_2.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Configuration </h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
User can create Seed, Farmers, Vehicles, Animals, Locations and Tags used for creating Crop Request.
</p>
<img src="assets/screenshots/agr_conf_3.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create Crop Request using created values in configuration.</h4>
<img src="assets/screenshots/agr_crop_4.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
User can print report of current record of used vehicles. </h4>
<img src="assets/screenshots/agr_vehicle_report_print_5.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Report view of used vehicle report.</h4>
<img src="assets/screenshots/agr_vehicle_repor_6.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
User Can Print Report Of Current Record of Used Animals.</h4>
<img src="assets/screenshots/animal_report_print_7.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Report View Of Used Animal Report.</h4>
<img src="assets/screenshots/animal_repor_8.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
User Can Rent The Vehicles.</h4>
<img src="assets/screenshots/rental_veh_9.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
User Can Rent The Animals.</h4>
<img src="assets/screenshots/animal_rental_10.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
User Can Submit Damage/ Loss of the Crops.</h4>
<img src="assets/screenshots/damage_loss_11.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
User Can Request Pesticide For The Crops.</h4>
<img src="assets/screenshots/pest_req_12.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
User Can Create and View Pesticides Available.</h4>
<img src="assets/screenshots/pest_details_13.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
User Can Take The Crop Request Report.</h4>
<img src="assets/screenshots/main_report_14.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Enter The Date Range To Print Report.</h4>
<img src="assets/screenshots/report_wiz_15.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Report View Of Crop Request.</h4>
<img src="assets/screenshots/main_rep_pdf_out_16.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
</div>
<!-- SUGGESTED PRODUCTS -->
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="text-align: center; padding: 2.5rem 1rem !important;">
<h2 style="color: #212529 !important;">Suggested Products</h2>
<hr
style="border: 3px solid #AC1015 !important; background-color: #AC1015 !important; width: 80px !important; margin-bottom: 2rem !important;" />
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/project_dashboard_odoo/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="assets/modules/module_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/pdf_report_with_sign/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="assets/modules/module_image (1).png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/fleet_car_workshop/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="assets/modules/module_image.jpeg">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/library_management_system/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="assets/modules/module_image (2).png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/front_office_management/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="assets/modules/module_image (4).png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i
class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a
class="carousel-control-next" href="#demo1" data-slide="next"
style="right:-25px;width: 35px;color: #000;">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF SUGGESTED PRODUCTS -->
<!-- OUR SERVICES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Services</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</section>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Industries</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</section>
<!-- END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container" style="margin: 5rem auto 2rem;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Need Help?</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center"
style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-6">
<a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
</div>
<div class="col-lg-6">
<a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
class="fa fa-whatsapp mr-2"></i>+91 86068 27707</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" />
</div>
<!-- End of Logo -->
<div class="col-lg-12">
<hr
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
</section>
<!-- END OF FOOTER -->
</div>

106
agriculture_management_odoo/views/agriculture_management_menus.xml

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Root menus of agriculture management-->
<menuitem id="agriculture_management_menu_root"
web_icon="agriculture_management_odoo,static/description/icon.png"
name="Agriculture Management"
sequence="20"/>
<menuitem id="crop_request_menu_root"
name="Crops"
parent="agriculture_management_menu_root"
sequence="20"/>
<!-- menu under Crops-->
<menuitem id="crop_request_menu"
name="Crop Request"
parent="crop_request_menu_root"
action="crop_details_action"
sequence="20"
groups=""/>
<menuitem id="rental_menu_root"
name="Rentals"
parent="agriculture_management_menu_root"
sequence="20"/>
<menuitem id="damage_loss_menu"
name="Damage and Loss"
parent="agriculture_management_menu_root"
action="agriculture_management_odoo.damage_loss_action"
sequence="30"/>
<menuitem id="disease_pest_menu_root"
name="Disease and Pesticides"
parent="agriculture_management_menu_root"
sequence="50"/>
<menuitem id="reporting_menu_root"
name="Reporting"
parent="agriculture_management_menu_root"
groups="agriculture_management_odoo.group_agriculture_admin"
sequence="50"/>
<menuitem id="configuration_menu_root"
name="Configuration"
parent="agriculture_management_menu_root"
groups="agriculture_management_odoo.group_agriculture_admin"
sequence="100"/>
<!-- menu under rentals-->
<menuitem id="vehicle_rental_menu"
name="Vehicle Rentals"
parent="rental_menu_root"
action="vehicle_rental_action"
sequence="20"/>
<menuitem id="animal_rental_menu"
name="Animal Rentals"
parent="rental_menu_root"
action="animal_rental_action"
sequence="20"/>
<!--menu under Disease and Pesticides-->
<menuitem id="pest_request_menu"
name="Pesticide Request"
parent="disease_pest_menu_root"
action="pest_request_action"
sequence="20"/>
<menuitem id="pest_detail_menu"
name="Pesticides Details"
parent="disease_pest_menu_root"
action="pest_detail_action"
sequence="20"/>
<!--menu under Reporting -->
<menuitem id="crop_reporting_menu"
name="Crop Reporting"
parent="reporting_menu_root"
action="crop_report_action"
sequence="10"/>
<menuitem id="pest_reporting_menu"
name="Pest Reporting"
parent="reporting_menu_root"
action="pest_report_action"
sequence="10"/>
<!--menu under configuration -->
<menuitem id="seed_detail_menu"
name="Seed"
parent="configuration_menu_root"
action="seed_detail_action"
sequence="10"/>
<menuitem id="farmer_detail_menu"
name="Farmers"
parent="configuration_menu_root"
action="farmer_detail_action"
sequence="12"/>
<menuitem id="animal_detail_menu"
name="Animals"
parent="configuration_menu_root"
action="animal_detail_action"
sequence="20"/>
<menuitem id="location_detail_menu"
name="Locations"
parent="configuration_menu_root"
action="location_detail_action"
sequence="20"/>
<menuitem id="vehicle_detail_menu"
name="Vehicles"
parent="configuration_menu_root"
action="vehicle_detail_action"
sequence="15"/>
<menuitem id="agriculture_tags_menu"
name="Tags"
parent="configuration_menu_root"
action="tags_details_action"
sequence="25"/>
</odoo>

50
agriculture_management_odoo/views/agriculture_tag_views.xml

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Form view for agriculture tags model -->
<record id="agriculture_tag_view_form" model="ir.ui.view">
<field name="name">agriculture.tag.view.form</field>
<field name="model">agriculture.tag</field>
<field name="arch" type="xml">
<form string="Tags">
<sheet>
<div class="oe_title">
<label for="name"/>
<h1>
<field name="name" placeholder="e.g. Services"/>
</h1>
</div>
<group>
<group>
<field name="color" required="True"
widget="color_picker"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<!-- Tree view for agriculture tags model -->
<record id="agriculture_tag_view_tree" model="ir.ui.view">
<field name="name">agriculture.tag.view.tree</field>
<field name="model">agriculture.tag</field>
<field name="arch" type="xml">
<tree string="Tags" editable="bottom" sample="1">
<field name="name"/>
<field name="color" widget="color_picker"/>
</tree>
</field>
</record>
<!-- Action for tags -->
<record id="tags_details_action" model="ir.actions.act_window">
<field name="name">Tags</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">agriculture.tag</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Tag
</p>
</field>
</record>
</odoo>

68
agriculture_management_odoo/views/animal_detail_views.xml

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Tree view for animal details -->
<record id="animal_detail_view_tree" model="ir.ui.view">
<field name="name">animal.detail.view.tree</field>
<field name="model">animal.detail</field>
<field name="arch" type="xml">
<tree>
<field name="breed"/>
<field name="age"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!-- Form view for animal details -->
<record id="animals_details_view_form" model="ir.ui.view">
<field name="name">animal.detail.view.form</field>
<field name="model">animal.detail</field>
<field name="arch" type="xml">
<form>
<header>
<button id="button_not_available"
name="action_not_available" string="Not Available"
class="btn-primary"
type="object" states="available"/>
<button id="button_available" name="action_available"
string="Set To Available" class="btn-primary"
type="object" states="not_available,sold"/>
<field name="state" widget="statusbar"
statusbar_visible="available,not_available,sold"/>
</header>
<sheet>
<h1>
<field name="breed"/>
</h1>
<group>
<group>
<field name="age"/>
</group>
<group>
<field name="company_id"/>
<field name="image" widget="image"/>
</group>
</group>
<field name="note" placeholder="Animal Description"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action for animal details -->
<record id="animal_detail_action" model="ir.actions.act_window">
<field name="name">Animals</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">animal.detail</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Animal
</p>
</field>
</record>
</odoo>

93
agriculture_management_odoo/views/animal_rental_views.xml

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Tree view for animal rental model-->
<record id="animal_rental_view_tree" model="ir.ui.view">
<field name="name">animal.rental.view.tree</field>
<field name="model">animal.rental</field>
<field name="arch" type="xml">
<tree>
<field name="animal_id"/>
<field name="no_of_days"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!-- Form view for animal rental model-->
<record id="animal_rental_view_form" model="ir.ui.view">
<field name="name">animal.rental.view.form</field>
<field name="model">animal.rental</field>
<field name="arch" type="xml">
<form>
<header>
<button id="button_draft" name="action_draft" string="Draft"
type="object" class="oe_highlight" states="cancel"/>
<button id="button_confirm" name="action_confirm"
string="Submit" type="object" class="btn-primary"
states="draft"/>
<button id="button_return" name="action_return"
string="Return" class="btn-primary"
type="object" states="confirm"/>
<button id="action_register_payment" name="action_register_payment"
string="Register Payment" class="btn-primary"
type="object" states="return"/>
<button id="button_cancel" name="action_cancel"
string="Cancel" class="btn-primary"
type="object" states="confirm"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,confirm,return,paid"/>
</header>
<sheet>
<widget name="web_ribbon" title="Paid"
bg_color="bg-success"
attrs="{'invisible': [('state', '!=', 'paid')]}"/>
<h1>
<field name="name"/>
</h1>
<group>
<group>
<field name="farmer_id"/>
<field name="animal_id"/>
<field name="no_of_days"/>
<field name="company_id" invisible="1"/>
<field name="currency_id" invisible="1"/>
<label for="amount" string="Amount"/>
<div>
<field name="amount" class="oe_inline"/>
Per Day
</div>
<field name="total_amount"/>
</group>
<group>
<field name="company_id"/>
<field name="start_date"/>
<field name="end_date"/>
</group>
</group>
<field name="note"
placeholder="Animal Description........."/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action for Animal Rental model-->
<record id="animal_rental_action" model="ir.actions.act_window">
<field name="name">Animal Rental</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">animal.rental</field>
<field name="view_mode">tree,form,kanban</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Animal Rental Request
</p>
</field>
</record>
</odoo>

163
agriculture_management_odoo/views/crop_request_views.xml

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Kanban view for crop request model-->
<record id="crop_request_view_kanban" model="ir.ui.view">
<field name="name">crop.request.view.kanban</field>
<field name="model">crop.request</field>
<field name="arch" type="xml">
<kanban default_group_by="state"
class="o_kanban_small_column o_kanban_project_tasks"
default_order="state"
examples="project"
js_class="project_kanban" sample="1">
<field name="ref"/>
<field name="farmer_id"/>
<field name="request_date"/>
<field name="seed_id"/>
<field name="tag_ids" widget="many2many_tags"
options="{'color_field': 'color'}"/>
<progressbar field="state"
colors='{"draft": "warning","confirm": "info", "cancel": "danger", "ploughing": "muted", "harvest": "muted", "storage": "success", "manuring": "primary"}'/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="oe_kanban_details">
<strong>
<field name="ref"/>
<br/>
<field name="farmer_id"/>
<br/>
<field name="request_date"/>
<br/>
<field name="seed_id"/>
<br/>
<field name="tag_ids"
widget="many2many_tags"
options="{'color_field': 'color'}"/>
<br/>
</strong>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- Tree view for crop request model-->
<record id="crop_request_view_tree" model="ir.ui.view">
<field name="name">crop.request.view.tree</field>
<field name="model">crop.request</field>
<field name="arch" type="xml">
<tree>
<field name="ref"/>
<field name="seed_id"/>
<field name="farmer_id"/>
<field name="location_id"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!-- Form view for crop request model-->
<record id="crop_request_view_form" model="ir.ui.view">
<field name="name">crop.request.view.form</field>
<field name="model">crop.request</field>
<field name="arch" type="xml">
<form>
<header>
<button id="button_draft" name="action_draft" string="Draft"
type="object" class="oe_highlight"
states="cancel"/>
<button id="button_confirm" name="action_confirm"
string="Submit" type="object" class="btn-primary"
states="draft"/>
<button id="button_ploughing" name="action_ploughing"
string="Ploughing"
class="btn-primary"
type="object" states="confirm"/>
<button id="button_sowing" name="action_sowing"
string="Sowing" class="btn-primary"
type="object" states="ploughing"/>
<button id="button_manuring" name="action_manuring"
string="Manure" class="btn-primary"
type="object" states="sowing"/>
<button id="button_irrigation" name="action_irrigation"
string="Irrigation" class="btn-primary"
type="object" states="manuring"/>
<button id="button_weeding" name="action_weeding"
string="Weeding" class="btn-primary"
type="object" states="irrigation"/>
<button id="button_harvest" name="action_harvest"
string="Harvest" class="btn-primary"
type="object" states="weeding"/>
<button id="button_storage" name="action_storage"
string="Storage" class="btn-primary"
type="object" states="harvest"/>
<button id="button_cancel" name="action_cancel"
string="Cancelled" class="btn-primary"
type="object"
states="ploughing,sowing,manuring,irrigation,weeding,harvest,storage"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,confirm,ploughing,sowing,manuring,irrigation,weeding,harvest,storage,cancel"/>
</header>
<sheet>
<h1>
<field name="ref"/>
</h1>
<group>
<group>
<field name="farmer_id"/>
<field name="seed_id"/>
<field name="user_id"/>
</group>
<group>
<field name="company_id"/>
<field name="request_date"/>
<field name="location_id"/>
<field name="tag_ids" widget="many2many_tags"
options="{'color_field': 'color'}"/>
</group>
</group>
<notebook>
<page string="Machinery" name="used_machinery">
<field name="machinery_ids">
<tree editable="bottom">
<field name="vehicle_id"/>
<field name="qty"/>
</tree>
</field>
</page>
<page string="Animals" name="used_animals">
<field name="animal_ids">
<tree editable="bottom">
<field name="animal_id"/>
<field name="qty"/>
</tree>
</field>
</page>
<page string="Description" name="description">
<field name="note"
placeholder="Crop Description........"/>
</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="crop_details_action" model="ir.actions.act_window">
<field name="name">Crops Details Action</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">crop.request</field>
<field name="view_mode">kanban,tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Crop Request
</p>
</field>
</record>
</odoo>

64
agriculture_management_odoo/views/damage_loss_views.xml

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Tree view for damage loss model -->
<record id="damage_loss_view_tree" model="ir.ui.view">
<field name="name">damage.loss.view.tree</field>
<field name="model">damage.loss</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="farmer_id"/>
<field name="crop_id"/>
<field name="location_id"/>
<field name="damage_loss_type"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!-- Form view for damage loss model -->
<record id="damage_loss_view_form" model="ir.ui.view">
<field name="name">damage.loss.view.form</field>
<field name="model">damage.loss</field>
<field name="arch" type="xml">
<form>
<sheet>
<h1>
<field name="name"/>
</h1>
<group>
<group>
<field name="farmer_id"/>
<field name="crop_id"/>
<field name="location_id"/>
<field name="company_id"/>
<field name="damage_loss_type"/>
<field name="damage_loss_date"/>
</group>
<group>
<field name="damage_loss_image" widget="image"/>
</group>
</group>
<field name="note" placeholder="Damage/Loss Description"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action of menu Damage and Loss-->
<record id="damage_loss_action" model="ir.actions.act_window">
<field name="name">Damage and Loss</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">damage.loss</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Damage and Loss
</p>
</field>
</record>
</odoo>

79
agriculture_management_odoo/views/farmer_detail_views.xml

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Kanban view for farmer details model-->
<record id="farmer_detail_view_kanban" model="ir.ui.view">
<field name="name">farmer.detail.view.kanban</field>
<field name="model">farmer.detail</field>
<field name="arch" type="xml">
<kanban>
<field name="farmer_id"/>
<field name="farmer_image"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_global_click">
<div class="oe_kanban_details">
<ul>
<group>
<group>
<div class="o_kanban_image_fill_left o_kanban_image_full">
<img t-att-src="record.farmer_image"
alt=""/>
<field name="farmer_image"
widget="image"/>
</div>
<h5>
<field name="farmer_id"/>
</h5>
</group>
</group>
</ul>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- Form view for farmer details model-->
<record id="farmer_detail_view_form" model="ir.ui.view">
<field name="name">farmer.detail.view.form</field>
<field name="model">farmer.detail</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="farmer_id"
widget="res_partner_many2one"
context="{'show_address': 1}"
options='{"always_reload": True}'/>
</group>
<group>
<field name="farmer_image" widget="image"/>
<field name="company_id"/>
</group>
</group>
<field name="note" placeholder="Location Description"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action for farmer details -->
<record id="farmer_detail_action" model="ir.actions.act_window">
<field name="name">Farmers</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">farmer.detail</field>
<field name="view_mode">kanban,form,tree</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Farmer
</p>
</field>
</record>
</odoo>

19
agriculture_management_odoo/views/fleet_vehicle_views.xml

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Inheriting fleet for adding field for contract date-->
<record id="fleet_vehicle_view_form" model="ir.ui.view">
<field name="name">fleet.vehicle.inherit.agriculture.management</field>
<field name="model">fleet.vehicle</field>
<field name="inherit_id" ref="fleet.fleet_vehicle_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='first_contract_date']"
position="replace">
<field name="first_contract_date" invisible="1"/>
</xpath>
<xpath expr="//field[@name='first_contract_date']"
position="before">
<field name="registration_date"/>
</xpath>
</field>
</record>
</odoo>

61
agriculture_management_odoo/views/location_detail_views.xml

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Tree view for location details model-->
<record id="location_detail_view_tree" model="ir.ui.view">
<field name="name">location.detail.view.tree</field>
<field name="model">location.detail</field>
<field name="arch" type="xml">
<tree>
<field name="location_name"/>
<field name="location_area_unit" optional="hide"/>
<field name="location_area"/>
<field name="location_type"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!-- Form view for location details model-->
<record id="location_detail_view_form" model="ir.ui.view">
<field name="name">location.detail.view.form</field>
<field name="model">location.detail</field>
<field name="arch" type="xml">
<form>
<sheet>
<h1>
<field name="location_name"/>
</h1>
<group>
<group>
<field name="location_address"/>
<field name="location_area"/>
<field name="company_id"/>
</group>
<group>
<field name="location_type"/>
<field name="location_area_unit"/>
</group>
</group>
<field name="note" placeholder="Location Description"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action for location details -->
<record id="location_detail_action" model="ir.actions.act_window">
<field name="name">Locations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">location.detail</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Location
</p>
</field>
</record>
</odoo>

67
agriculture_management_odoo/views/pest_detail_views.xml

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!--Tree view of pest details model-->
<record id="pest_detail_view_tree" model="ir.ui.view">
<field name="name">pest.detail.view.tree</field>
<field name="model">pest.detail</field>
<field name="arch" type="xml">
<tree>
<field name="pest_name"/>
<field name="pest_expiry_date"/>
<field name="pest_quantity"/>
<field name="pest_cost"/>
<field name="total_cost"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!--Form view of pest details model-->
<record id="pest_detail_view_form" model="ir.ui.view">
<field name="name">pest.detail.view.form</field>
<field name="model">pest.detail</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="pest_name"/>
<field name="pest_expiry_date"/>
<field name="currency_id" invisible="1"/>
<field name="pest_quantity"/>
<field name="pest_cost" widget='monetary'
options="{'currency_field': 'currency_id'}"
optional="show"/>
<field name="total_cost" widget='monetary'
options="{'currency_field': 'currency_id'}"
optional="show"/>
</group>
<group>
<field name="company_id"/>
<field name="pest_image" widget="image"/>
</group>
</group>
<field name="pest_description"
placeholder="Pesticide Description..............."/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action for pest details -->
<record id="pest_detail_action" model="ir.actions.act_window">
<field name="name">Pesticide Details</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">pest.detail</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Pesticide
</p>
</field>
</record>
</odoo>

94
agriculture_management_odoo/views/pest_request_views.xml

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!--Tree view of pest request model-->
<record id="pest_request_view_tree" model="ir.ui.view">
<field name="name">pest.request.view.tree</field>
<field name="model">pest.request</field>
<field name="arch" type="xml">
<tree>
<field name="reference"/>
<field name="farmer_id"/>
<field name="crop_id"/>
<field name="location_id"/>
<field name="disease"/>
<field name="total_cost"/>
<field name="state"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!--Form view of pest request model-->
<record id="pest_request_view_form" model="ir.ui.view">
<field name="name">pest.request.view.form</field>
<field name="model">pest.request</field>
<field name="arch" type="xml">
<form>
<header>
<button id="button_draft" name="action_draft" string="Draft"
type="object" class="oe_highlight"
states="rejected,approve"/>
<button id="button_pending" name="action_pending"
string="Submit" type="object" class="btn-primary"
states="draft"/>
<button id="button_approved" name="action_approved"
string="Approved"
class="btn-primary"
type="object" states="pending"
groups="agriculture_management_odoo.group_agriculture_admin"/>
<button id="button_rejected" name="action_rejected"
string="Reject"
class="btn-primary"
type="object" states="pending"
groups="agriculture_management_odoo.group_agriculture_admin"/>
<field name="state" widget="statusbar"
statusbar_visible="draft"/>
</header>
<sheet>
<h1>
<field name="reference"/>
</h1>
<group>
<group>
<field name="farmer_id"/>
<field name="crop_id"/>
<field name="disease"/>
<field name="pest_id"/>
<field name="currency_id" invisible="1"/>
<field name="total_cost" widget='monetary'
options="{'currency_field': 'currency_id'}"
optional="show"/>
</group>
<group>
<field name="company_id"/>
<field name="request_date"/>
<field name="location_id"/>
<field name="pest_quantity"/>
<field name="pest_cost" widget='monetary'
options="{'currency_field': 'currency_id'}"
optional="show"/>
</group>
</group>
<field name="note" placeholder="Pesticide Description"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action Menu under Disease & Pesticides-->
<record id="pest_request_action" model="ir.actions.act_window">
<field name="name">Pesticide Request</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">pest.request</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Pest Request
</p>
</field>
</record>
</odoo>

60
agriculture_management_odoo/views/seed_detail_views.xml

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!--Tree view of seed details-->
<record id="seed_detail_view_tree" model="ir.ui.view">
<field name="name">seed.detail.view.tree</field>
<field name="model">seed.detail</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="seed_type"/>
<field name="quantity"/>
<field name="unit" optional="hide"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!--form view of seed details-->
<record id="seed_detail_view_form" model="ir.ui.view">
<field name="name">seed.detail.view.form</field>
<field name="model">seed.detail</field>
<field name="arch" type="xml">
<form>
<sheet>
<h1>
<field name="name">Name</field>
</h1>
<group>
<group>
<field name="quantity"/>
<field name="seed_type"/>
</group>
<group>
<field name="company_id"/>
<field name="unit"/>
</group>
</group>
<field name="note" placeholder="Seed Description"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action of menu under configuration-->
<record id="seed_detail_action" model="ir.actions.act_window">
<field name="name">Seeds</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">seed.detail</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Seed
</p>
</field>
</record>
</odoo>

59
agriculture_management_odoo/views/vehicle_detail_views.xml

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Tree view for vehicle details model-->
<record id="vehicle_detail_view_tree" model="ir.ui.view">
<field name="name">vehicle.detail.view.tree</field>
<field name="model">vehicle.detail</field>
<field name="arch" type="xml">
<tree>
<field name="vehicle_main_id"/>
<field name="vehicle_model"/>
<field name="vehicle_type"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!-- Form view for vehicle details model-->
<record id="vehicles_details_view_form" model="ir.ui.view">
<field name="name">vehicle.detail.view.form</field>
<field name="model">vehicle.detail</field>
<field name="arch" type="xml">
<form>
<sheet>
<h1>
<field name="name"/>
</h1>
<group>
<group>
<field name="vehicle_main_id"/>
<field name="vehicle_model"/>
</group>
<group>
<field name="company_id"/>
<field name="vehicle_type"/>
</group>
</group>
<field name="note" placeholder="Vehicle Description"/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action for vehicle details -->
<record id="vehicle_detail_action" model="ir.actions.act_window">
<field name="name">Vehicles</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">vehicle.detail</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Vehicle
</p>
</field>
</record>
</odoo>

94
agriculture_management_odoo/views/vehicle_rental_views.xml

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Tree view for vehicle rental model-->
<record id="vehicle_rental_view_tree" model="ir.ui.view">
<field name="name">vehicle.rental.view.tree</field>
<field name="model">vehicle.rental</field>
<field name="arch" type="xml">
<tree>
<field name="vehicle_id"/>
<field name="no_of_days"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>
</record>
<!-- Form view for vehicle rental model-->
<record id="vehicles_rental_view_form" model="ir.ui.view">
<field name="name">vehicle.rental.view.form</field>
<field name="model">vehicle.rental</field>
<field name="arch" type="xml">
<form>
<header>
<button id="button_draft" name="action_draft" string="Draft"
type="object" class="oe_highlight" states="cancel"/>
<button id="button_confirm" name="action_confirm"
string="Submit" type="object" class="btn-primary"
states="draft"/>
<button id="button_return" name="action_return"
string="Return" class="btn-primary"
type="object" states="confirm"/>
<button id="action_register_payment"
name="action_register_payment"
string="Register Payment" class="btn-primary"
type="object" states="return"/>
<button id="button_cancel" name="action_cancel"
string="Cancel" class="btn-primary"
type="object" states="confirm"/>
<field name="state" widget="statusbar"
statusbar_visible="draft,confirm,return,paid"/>
</header>
<sheet>
<widget name="web_ribbon" title="Paid"
bg_color="bg-success"
attrs="{'invisible': [('state', '!=', 'paid')]}"/>
<h1>
<field name="name"/>
</h1>
<group>
<group>
<field name="farmer_id"/>
<field name="vehicle_id"/>
<field name="no_of_days"/>
<field name="company_id"/>
<field name="currency_id" invisible="1"/>
<label for="amount" string="Amount"/>
<div>
<field name="amount" class="oe_inline"/>
Per Day
</div>
<field name="total_amount"/>
</group>
<group>
<field name="company_id"/>
<field name="start_date"/>
<field name="end_date"/>
</group>
</group>
<field name="note"
placeholder="Vehicle Description........."/>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids"/>
<field name="activity_ids"/>
<field name="message_ids"/>
</div>
</form>
</field>
</record>
<!-- Action Menu under rental-->
<record id="vehicle_rental_action" model="ir.actions.act_window">
<field name="name">Vehicle Rental</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">vehicle.rental</field>
<field name="view_mode">tree,form,kanban</field>
<field name="context">{'search_default_available':1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create Your First Vehicle Rental Request
</p>
</field>
</record>
</odoo>

25
agriculture_management_odoo/wizard/__init__.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import crop_report
from . import pest_report
from . import animal_register_payment
from . import vehicle_register_payment

52
agriculture_management_odoo/wizard/animal_register_payment.py

@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class AnimalRegisterPayment(models.TransientModel):
"""Details for a payment for animal rental"""
_name = 'animal.register.payment.wizard'
_description = 'Register Payment'
farmer_id = fields.Many2one('farmer.detail', string='Partner',
help='Name of partner to register the payment')
rental_duration = fields.Float(string='Duration',
help='Duration of the parking vehicle')
amount = fields.Float(string='Amount', help='Amount of the parking vehicle')
ref = fields.Char(string='Reference',
help='Reference to the parking ticket')
date = fields.Date(string='Date', default=fields.Date.context_today,
help='Date when payment was made')
def animal_rent_payment(self):
"""Returns the amount of the rental of vehicle for the customer."""
active_id = self._context.get('active_id')
active_record = self.env['animal.rental'].browse(active_id)
payment = self.env['account.payment'].create({
'payment_type': 'inbound',
'partner_id': self.farmer_id.id,
'amount': self.amount,
'ref': self.ref,
})
payment.action_post()
active_record.animal_paid_bool = True
active_record.state = 'paid'

27
agriculture_management_odoo/wizard/animal_register_payment_views.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!--Form view of Register Payment Wizard-->
<record id="animal_register_payment_wizard_view_form" model="ir.ui.view">
<field name="name">animal.register.payment.wizard.view.form</field>
<field name="model">animal.register.payment.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="farmer_id"/>
<field name="rental_duration"/>
<field name="amount"/>
</group>
<group>
<field name="ref"/>
<field name="date"/>
</group>
</group>
<footer>
<button name="animal_rent_payment" type="object" string="Pay" class="btn-primary"/>
<button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

85
agriculture_management_odoo/wizard/crop_report.py

@ -0,0 +1,85 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo.exceptions import UserError
from odoo import fields, models, _
class CropReport(models.TransientModel):
""" Model for creating report for crop request """
_name = 'crop.report'
_description = 'Crop Report In Crop Request'
date_from = fields.Date(string='From Date', help=' Start date of report')
date_to = fields.Date(string='To Date', help='End date of report')
def action_pdf_report(self):
""" Function for crop request pdf report """
ret = """select crop_request.ref, res_partner.name,
seed_detail.name, crop_request.request_date,
crop_request.state,
location_detail.location_name from crop_request
inner join farmer_detail ON
crop_request.farmer_id = farmer_detail.id
inner join res_partner ON
farmer_detail.farmer_id = res_partner.id
inner join seed_detail ON
crop_request.seed_id = seed_detail.id
inner join location_detail ON
crop_request.location_id = location_detail.id"""
today = fields.Date.today()
if self.date_from and not self.date_to:
if self.date_from > today:
raise UserError(
_('You could not set the start date or '
'the end date in the future.'))
else:
ret = ret + """ where crop_request.request_date >= '""" + str(
self.date_from) + """' AND crop_request.request_date <= '""" \
+ str(
today) + """'"""
if self.date_to and not self.date_from:
if self.date_to > today:
raise UserError(
_('You could not set the start date or the end '
'date in the future.'))
else:
ret = ret + """ where crop_request.request_date <= '""" + str(
self.date_to) + """'"""
if self.date_from and self.date_to:
if self.date_from <= self.date_to:
ret = ret + """ where crop_request.request_date >= '""" + \
str(self.date_from) + """' AND crop_request.request_date <= '""" \
+ str(self.date_to) + """'"""
else:
raise UserError(
_('The start date must be inferior to the end date.'))
self.env.cr.execute(ret)
record = self.env.cr.fetchall()
data = {
'form': self.read()[0],
'date_to': self.date_to,
'date_from': self.date_from,
'record': record
}
return (self.env.ref(
'agriculture_management_odoo.action_crop_request_report').report_action(
self, data=data))

35
agriculture_management_odoo/wizard/crop_report_views.xml

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Wizard for printing pdf report of crop request-->
<record id="crop_report_view_form" model="ir.ui.view">
<field name="name">crop.report.view.form</field>
<field name="model">crop.report</field>
<field name="arch" type="xml">
<form string="Crop Report">
<group>
<group>
<field name="date_from"/>
</group>
<group>
<field name="date_to"/>
</group>
</group>
<footer>
<button name="action_pdf_report" string="Print PDF"
type="object" class="btn-primary"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- Action of menu Reporting-->
<record id="crop_report_action" model="ir.actions.act_window">
<field name="name">Crop Report</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">crop.report</field>
<field name="view_mode">form</field>
<field name="view_id" ref="crop_report_view_form"/>
<field name="target">new</field>
</record>
</odoo>

82
agriculture_management_odoo/wizard/pest_report.py

@ -0,0 +1,82 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo.exceptions import UserError
from odoo import fields, models, _
class PestReport(models.TransientModel):
""" Model for creating pest request report """
_name = 'pest.report'
_description = 'Pest Report in Pest Request'
date_from = fields.Date(string='From Date', help=' Start date of report')
date_to = fields.Date(string='To Date', help=' End date of report')
def action_pdf_report(self):
""" Function for pest request pdf report """
ret = """select pest_request.reference, res_partner.name, crop_request.ref,
pest_request.disease, pest_detail.pest_name as pest_name,
pest_detail.pest_cost as cost,pest_request.pest_quantity,
pest_request.total_cost,pest_request.state from pest_request
inner join res_partner on pest_request.farmer_id = res_partner.id
inner join crop_request on crop_request.id = pest_request.crop_id
inner join pest_detail on pest_detail.id = pest_request.pest_id"""
today = fields.Date.today()
if self.date_from and not self.date_to:
if self.date_from > today:
raise UserError(
_('You could not set the start date or the '
'end date in the future.'))
else:
ret = ret + """ where pest_request.request_date >= '""" + str(
self.date_from) + """' AND pest_request.request_date <=
'""" \
+ str(
today) + """'"""
if self.date_to and not self.date_from:
if self.date_to > today:
raise UserError(
_('You could not set the start date or the end '
'date in the future.'))
else:
ret = ret + """ where pest_request.request_date <= '""" + str(
self.date_to) + """'"""
if self.date_from and self.date_to:
if self.date_from <= self.date_to:
ret = ret + """ where pest_request.request_date >= '""" + \
str(self.date_from) + """' AND pest_request.request_date
<= '""" \
+ str(self.date_to) + """'"""
else:
raise UserError(
_('The start date must be inferior to the end date.'))
self.env.cr.execute(ret)
record = self.env.cr.fetchall()
data = {
'form': self.read()[0],
'date_to': self.date_to,
'date_from': self.date_from,
'record': record
}
return self.env.ref(
'agriculture_management_odoo.pest_request_report_action').report_action(
self, data=data)

35
agriculture_management_odoo/wizard/pest_report_views.xml

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Wizard for printing pdf report of pest request-->
<record id="pest_report_view_form" model="ir.ui.view">
<field name="name">pest.report.view.form</field>
<field name="model">pest.report</field>
<field name="arch" type="xml">
<form string="Pest Report">
<group>
<group>
<field name="date_from"/>
</group>
<group>
<field name="date_to"/>
</group>
</group>
<footer>
<button name="action_pdf_report" string="Print PDF"
type="object" class="btn-primary"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- Action for pest report wizard-->
<record id="pest_report_action" model="ir.actions.act_window">
<field name="name">Pest Report</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">pest.report</field>
<field name="view_mode">form</field>
<field name="view_id" ref="pest_report_view_form"/>
<field name="target">new</field>
</record>
</odoo>

52
agriculture_management_odoo/wizard/vehicle_register_payment.py

@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Ayana KP(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models
class VehicleRegisterPayment(models.TransientModel):
"""Details for a payment for vehicle rental"""
_name = 'vehicle.register.payment.wizard'
_description = 'Register Payment'
farmer_id = fields.Many2one('farmer.detail', string='Partner',
help='Name of partner to register the payment')
rental_duration = fields.Float(string='Duration',
help='Duration of the parking vehicle')
amount = fields.Float(string='Amount', help='Amount of the parking vehicle')
ref = fields.Char(string='Reference',
help='Reference to the parking ticket')
date = fields.Date(string='Date', default=fields.Date.context_today,
help='Date when payment was made')
def vehicle_rent_payment(self):
"""Returns the amount of the rental of vehicle for the customer."""
active_id = self._context.get('active_id')
active_record = self.env['vehicle.rental'].browse(active_id)
payment = self.env['account.payment'].create({
'payment_type': 'inbound',
'partner_id': self.farmer_id.id,
'amount': self.amount,
'ref': self.ref,
})
payment.action_post()
active_record.vehicle_paid_bool = True
active_record.state = 'paid'

27
agriculture_management_odoo/wizard/vehicle_register_payment_views.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!--Form view of Register Payment Wizard-->
<record id="vehicle_register_payment_wizard_view_form" model="ir.ui.view">
<field name="name">vehicle.register.payment.wizard.view.form</field>
<field name="model">vehicle.register.payment.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="farmer_id"/>
<field name="rental_duration"/>
<field name="amount"/>
</group>
<group>
<field name="ref"/>
<field name="date"/>
</group>
</group>
<footer>
<button name="vehicle_rent_payment" type="object" string="Pay" class="btn-primary"/>
<button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>
Loading…
Cancel
Save