@ -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>`__ |
@ -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 |
@ -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, |
|||
} |
@ -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> |
@ -0,0 +1,6 @@ |
|||
## Module <agriculture_management_odoo> |
|||
|
|||
#### 30.05.2024 |
|||
#### Version 14.0.1.0.0 |
|||
#### ADD |
|||
- Initial commit for Agriculture Management |
@ -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 |
@ -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 !"), |
|||
] |
@ -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' |
@ -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', |
|||
} |
@ -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) |
@ -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) |
@ -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] |
@ -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) |
@ -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 |
@ -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") |
@ -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) |
@ -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 |
@ -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 |
@ -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) |
@ -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) |
@ -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', |
|||
} |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
|
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 174 KiB |
After Width: | Height: | Size: 128 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 157 KiB |
After Width: | Height: | Size: 89 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 157 KiB |
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 343 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 9.7 KiB |
@ -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 & 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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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> |
@ -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 |
@ -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' |
@ -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> |
@ -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)) |
@ -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> |
@ -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) |
@ -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> |
@ -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' |
@ -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> |