Browse Source

[UPDT] Aug 05 : Initial Commit 'freight_management_system'

pull/219/head
AjmalCybro 3 years ago
parent
commit
17d9aa2f22
  1. 17
      freight_management_system/README.rst
  2. 24
      freight_management_system/__init__.py
  3. 50
      freight_management_system/__manifest__.py
  4. 23
      freight_management_system/data/freight_order_data.xml
  5. 4
      freight_management_system/doc/RELEASE_NOTES.md
  6. 27
      freight_management_system/model/__init__.py
  7. 154
      freight_management_system/model/custom_clearance.py
  8. 56
      freight_management_system/model/freight_container.py
  9. 503
      freight_management_system/model/freight_order.py
  10. 56
      freight_management_system/model/freight_port.py
  11. 98
      freight_management_system/model/order_track.py
  12. 137
      freight_management_system/report/report_order.xml
  13. 81
      freight_management_system/report/report_tracking.xml
  14. 18
      freight_management_system/security/ir.model.access.csv
  15. BIN
      freight_management_system/static/description/assets/icons/check.png
  16. BIN
      freight_management_system/static/description/assets/icons/chevron.png
  17. BIN
      freight_management_system/static/description/assets/icons/cogs.png
  18. BIN
      freight_management_system/static/description/assets/icons/consultation.png
  19. BIN
      freight_management_system/static/description/assets/icons/ecom-black.png
  20. BIN
      freight_management_system/static/description/assets/icons/education-black.png
  21. BIN
      freight_management_system/static/description/assets/icons/hotel-black.png
  22. BIN
      freight_management_system/static/description/assets/icons/license.png
  23. BIN
      freight_management_system/static/description/assets/icons/lifebuoy.png
  24. BIN
      freight_management_system/static/description/assets/icons/logo.png
  25. BIN
      freight_management_system/static/description/assets/icons/manufacturing-black.png
  26. BIN
      freight_management_system/static/description/assets/icons/pos-black.png
  27. BIN
      freight_management_system/static/description/assets/icons/puzzle.png
  28. BIN
      freight_management_system/static/description/assets/icons/restaurant-black.png
  29. BIN
      freight_management_system/static/description/assets/icons/service-black.png
  30. BIN
      freight_management_system/static/description/assets/icons/trading-black.png
  31. BIN
      freight_management_system/static/description/assets/icons/training.png
  32. BIN
      freight_management_system/static/description/assets/icons/update.png
  33. BIN
      freight_management_system/static/description/assets/icons/user.png
  34. BIN
      freight_management_system/static/description/assets/icons/wrench.png
  35. BIN
      freight_management_system/static/description/assets/modules/budget_image.png
  36. BIN
      freight_management_system/static/description/assets/modules/credit_image.png
  37. BIN
      freight_management_system/static/description/assets/modules/employee_image.png
  38. BIN
      freight_management_system/static/description/assets/modules/export_image.png
  39. BIN
      freight_management_system/static/description/assets/modules/gantt_image.png
  40. BIN
      freight_management_system/static/description/assets/modules/quotation_image.png
  41. BIN
      freight_management_system/static/description/assets/screenshots/freight_1.png
  42. BIN
      freight_management_system/static/description/assets/screenshots/freight_10.png
  43. BIN
      freight_management_system/static/description/assets/screenshots/freight_11.png
  44. BIN
      freight_management_system/static/description/assets/screenshots/freight_12.png
  45. BIN
      freight_management_system/static/description/assets/screenshots/freight_13.png
  46. BIN
      freight_management_system/static/description/assets/screenshots/freight_14.png
  47. BIN
      freight_management_system/static/description/assets/screenshots/freight_15.png
  48. BIN
      freight_management_system/static/description/assets/screenshots/freight_2.png
  49. BIN
      freight_management_system/static/description/assets/screenshots/freight_3.png
  50. BIN
      freight_management_system/static/description/assets/screenshots/freight_4.png
  51. BIN
      freight_management_system/static/description/assets/screenshots/freight_5.png
  52. BIN
      freight_management_system/static/description/assets/screenshots/freight_6.png
  53. BIN
      freight_management_system/static/description/assets/screenshots/freight_7.png
  54. BIN
      freight_management_system/static/description/assets/screenshots/freight_8.png
  55. BIN
      freight_management_system/static/description/assets/screenshots/freight_9.png
  56. BIN
      freight_management_system/static/description/assets/screenshots/hero.gif
  57. BIN
      freight_management_system/static/description/banner.png
  58. BIN
      freight_management_system/static/description/icon.png
  59. 762
      freight_management_system/static/description/index.html
  60. 75
      freight_management_system/views/custom_clearance.xml
  61. 122
      freight_management_system/views/freight_container.xml
  62. 181
      freight_management_system/views/freight_order.xml
  63. 159
      freight_management_system/views/freight_port.xml
  64. 50
      freight_management_system/views/order_track.xml
  65. 23
      freight_management_system/wizard/__init__.py
  66. 89
      freight_management_system/wizard/custom_revision.py
  67. 37
      freight_management_system/wizard/custom_revision.xml

17
freight_management_system/README.rst

@ -0,0 +1,17 @@
Freight Management v15
======================
Freight Management
Installation
============
- www.odoo.com/documentation/15.0/setup/install.html
- Install our custom addon
Configuration
=============
No additional configurations needed
Credits
=======
Developer: Megha v15 @ cybrosys, Contact: odoo@cybrosys.com

24
freight_management_system/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
###################################################################################
# Freight Management
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import model
from . import wizard

50
freight_management_system/__manifest__.py

@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
###################################################################################
# Freight Management
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'Freight Management',
'version': '15.0.1.0.0',
'summary': 'Module for Managing All Frieght Operations',
'description': 'Module for Managing All Frieght Operations',
'author': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'depends': ['base', 'product', 'account'],
'images': ['static/description/banner.png'],
'data': [
'security/ir.model.access.csv',
'data/freight_order_data.xml',
'views/freight_order.xml',
'views/freight_port.xml',
'views/freight_container.xml',
'views/custom_clearance.xml',
'views/order_track.xml',
'report/report_order.xml',
'report/report_tracking.xml',
'wizard/custom_revision.xml'
],
'installable': True,
'application': False,
'auto_install': False,
'license': 'AGPL-3',
}

23
freight_management_system/data/freight_order_data.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="freight_order_sequence" model="ir.sequence">
<field name="name">Freight Order Sequence</field>
<field name="code">freight.order.sequence</field>
<field name="prefix">FO-%(year)s-%(month)s-%(day)s-</field>
<field eval="1" name="number_next" />
<field eval="1" name="number_increment" />
<field eval="True" name="use_date_range" />
<field name="padding">4</field>
</record>
<record model="freight.routes" id="main_carriage">
<field name="name">Main Carriage</field>
<field name="land_sale">0.00</field>
<field name="air_sale">0.00</field>
<field name="water_sale">0.00</field>
</record>
</data>
</odoo>

4
freight_management_system/doc/RELEASE_NOTES.md

@ -0,0 +1,4 @@
## Module <freight_management_system>
#### 04.08.2022
#### Version 15.0.1.0.0

27
freight_management_system/model/__init__.py

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import freight_order
from . import freight_port
from . import freight_container
from . import custom_clearance
from . import order_track

154
freight_management_system/model/custom_clearance.py

@ -0,0 +1,154 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from werkzeug import urls
from odoo import api, fields, models, _
class CustomClearance(models.Model):
_name = 'custom.clearance'
_description = 'Custom Clearance'
name = fields.Char('Name', compute='_compute_name')
freight_id = fields.Many2one('freight.order', required=True)
date = fields.Date('Date')
agent_id = fields.Many2one('res.partner', 'Agent', required=True)
loading_port_id = fields.Many2one('freight.port', string="Loading Port")
discharging_port_id = fields.Many2one('freight.port',
string="Discharging Port")
line_ids = fields.One2many('custom.clearance.line', 'line_id')
state = fields.Selection([('draft', 'Draft'), ('confirm', 'Confirm'),
('done', 'Done')], default='draft')
@api.depends('freight_id')
def _compute_name(self):
"""Compute the name of custom clearance"""
for rec in self:
if rec.freight_id:
rec.name = 'CC - ' + str(rec.freight_id.name)
else:
rec.name = 'CC - '
@api.onchange('freight_id')
def _onchange_freight_id(self):
"""Getting default values for loading and discharging port"""
for rec in self:
rec.date = rec.freight_id.order_date
rec.loading_port_id = rec.freight_id.loading_port_id
rec.discharging_port_id = rec.freight_id.discharging_port_id
rec.agent_id = rec.freight_id.agent_id
def action_confirm(self):
"""Send mail to inform agents to custom clearance is confirmed"""
for rec in self:
rec.name = 'CC' \
' - ' + rec.freight_id.name
rec.state = 'confirm'
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
Urls = urls.url_join(base_url, 'web#id=%(id)s&model=custom.clearance&view_type=form' % {'id': self.id})
Urls_ = urls.url_join(base_url, 'web#id=%(id)s&model=freight.order&view_type=form' % {'id': self.freight_id.id})
mail_content = _('Hi %s,<br>'
'The Custom Clearance %s is confirmed'
'<div style = "text-align: center; '
'margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; font-size: 12px; '
'line-height: 18px; color: #FFFFFF; '
'border-color:#875A7B;text-decoration: none; '
'display: inline-block; '
'margin-bottom: 0px; font-weight: 400;'
'text-align: center; vertical-align: middle; '
'cursor: pointer; white-space: nowrap; '
'background-image: none; '
'background-color: #875A7B; '
'border: 1px solid #875A7B; border-radius:3px;">'
'View %s</a></div>'
'<div style = "text-align: center; '
'margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; font-size: 12px; '
'line-height: 18px; color: #FFFFFF; '
'border-color:#875A7B;text-decoration: none; '
'display: inline-block; '
'margin-bottom: 0px; font-weight: 400;'
'text-align: center; vertical-align: middle; '
'cursor: pointer; white-space: nowrap; '
'background-image: none; '
'background-color: #875A7B; '
'border: 1px solid #875A7B; border-radius:3px;">'
'View %s</a></div>'
) % (rec.agent_id.name, rec.name, Urls,
rec.name, Urls_, self.freight_id.name)
main_content = {
'subject': _('Custom Clerance For %s') % self.freight_id.name,
'author_id': self.env.user.partner_id.id,
'body_html': mail_content,
'email_to': rec.agent_id.email,
}
mail_id = self.env['mail.mail'].create(main_content)
mail_id.mail_message_id.body = mail_content
mail_id.send()
def action_revision(self):
"""Creating custom revision"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Received/Delivered',
'view_mode': 'form',
'target': 'new',
'res_model': 'custom.clearance.revision.wizard',
'context': {
'default_custom_id': self.id
}
}
def get_revision(self):
"""Getting details of custom revision"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Custom Revision',
'view_mode': 'tree,form',
'res_model': 'custom.clearance.revision',
'domain': [('clearance_id', '=', self.id)],
'context': "{'create': False}"
}
class CustomClearanceLine(models.Model):
_name = 'custom.clearance.line'
_description = 'Custom Clearance Line'
name = fields.Char('Document Name')
document = fields.Binary(string="Documents", store=True, attachment=True)
line_id = fields.Many2one('custom.clearance')
class CustomClearanceRevision(models.Model):
_name = 'custom.clearance.revision'
_description = 'Custom Clearance Revision'
name = fields.Char('Name')
name = fields.Char()
reason = fields.Text()
clearance_id = fields.Many2one('custom.clearance')

56
freight_management_system/model/freight_container.py

@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import fields, models
class FreightContainer(models.Model):
_name = 'freight.container'
name = fields.Char('Name', required=True)
code = fields.Char('Code')
size = fields.Float('Size', required=True)
size_uom_id = fields.Many2one('uom.uom', string='Size UOM')
weight = fields.Float('Weight', required=True)
weight_uom_id = fields.Many2one('uom.uom', string='Weight UOM')
volume = fields.Float('Volume', required=True)
volume_uom_id = fields.Many2one('uom.uom', string='Volume UOM')
active = fields.Boolean('Active', default=True)
state = fields.Selection([('available', 'Available'),
('reserve', 'Reserve')], default='available')
class FreightService(models.Model):
_name = 'freight.service'
name = fields.Char('Name', required=True)
sale_price = fields.Float('Sale Price', required=True)
line_ids = fields.One2many('freight.service.line', 'line_id')
class FreightServiceLine(models.Model):
_name = 'freight.service.line'
partner_id = fields.Many2one('res.partner', string="Vendor")
sale = fields.Float('Sale Price')
line_id = fields.Many2one('freight.service')

503
freight_management_system/model/freight_order.py

@ -0,0 +1,503 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from werkzeug import urls
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class FreightOrder(models.Model):
_name = 'freight.order'
_description = 'Freight Order'
name = fields.Char('Name', default='New', readonly=True)
shipper_id = fields.Many2one('res.partner', 'Shipper', required=True,
help="Shipper's Details")
consignee_id = fields.Many2one('res.partner', 'Consignee',
help="Details of consignee")
type = fields.Selection([('import', 'Import'), ('export', 'Export')],
'Import/Export', required=True,
help="Type of freight operation")
transport_type = fields.Selection([('land', 'Land'), ('air', 'Air'),
('water', 'Water')], "Transport",
help='Type of transportation',
required=True)
land_type = fields.Selection([('ltl', 'LTL'), ('ftl', 'FTL')],
'Land Shipping',
help="Types of shipment movement involved in Land")
water_type = fields.Selection([('fcl', 'FCL'), ('lcl', 'LCL')],
'Water Shipping',
help="Types of shipment movement involved in Water")
order_date = fields.Date('Date', default=fields.Date.today(),
help="Date of order")
loading_port_id = fields.Many2one('freight.port', string="Loading Port",
required=True,
help="Loading port of the freight order")
discharging_port_id = fields.Many2one('freight.port',
string="Discharging Port",
required=True,
help="Discharging port of freight order")
state = fields.Selection([('draft', 'Draft'), ('submit', 'Submitted'),
('confirm', 'Confirmed'),
('invoice', 'Invoiced'), ('done', 'Done'),
('cancel', 'Cancel')], default='draft')
clearance = fields.Boolean("Clearance")
clearance_count = fields.Integer(compute='compute_count')
invoice_count = fields.Integer(compute='compute_count')
total_order_price = fields.Float('Total',
compute='_compute_total_order_price')
total_volume = fields.Float('Total Volume',
compute='_compute_total_order_price')
total_weight = fields.Float('Total Weight',
compute='_compute_total_order_price')
order_ids = fields.One2many('freight.order.line', 'order_id')
route_ids = fields.One2many('freight.order.routes.line', 'route_id')
total_route_sale = fields.Float('Total Sale',
compute="_compute_total_route_cost")
service_ids = fields.One2many('freight.order.service', 'line_id')
total_service_sale = fields.Float('Service Total Sale',
compute="_compute_total_service_cost")
agent_id = fields.Many2one('res.partner', 'Agent', required=True,
help="Details of agent")
expected_date = fields.Date('Expected Date')
track_ids = fields.One2many('freight.track', 'track_id')
@api.depends('order_ids.total_price', 'order_ids.volume',
'order_ids.weight')
def _compute_total_order_price(self):
"""Computing the price of the order"""
for rec in self:
rec.total_order_price = sum(rec.order_ids.mapped('total_price'))
rec.total_volume = sum(rec.order_ids.mapped('volume'))
rec.total_weight = sum(rec.order_ids.mapped('weight'))
@api.depends('route_ids.sale')
def _compute_total_route_cost(self):
"""Computing the total cost of route operation"""
for rec in self:
rec.total_route_sale = sum(rec.route_ids.mapped('sale'))
@api.depends('service_ids.total_sale')
def _compute_total_service_cost(self):
"""Computing the total cost of services"""
for rec in self:
rec.total_service_sale = sum(rec.service_ids.mapped('total_sale'))
@api.model
def create(self, vals):
"""Create Sequence"""
sequence_code = 'freight.order.sequence'
vals['name'] = self.env['ir.sequence'].next_by_code(sequence_code)
return super(FreightOrder, self).create(vals)
def create_custom_clearance(self):
"""Create custom clearance"""
clearance = self.env['custom.clearance'].create({
'name': 'CC - ' + self.name,
'freight_id': self.id,
'date': self.order_date,
'loading_port_id': self.loading_port_id.id,
'discharging_port_id': self.discharging_port_id.id,
'agent_id': self.agent_id.id,
})
result = {
'name': 'action.name',
'type': 'ir.actions.act_window',
'views': [[False, 'form']],
'target': 'current',
'res_id': clearance.id,
'res_model': 'custom.clearance',
}
self.clearance = True
return result
def get_custom_clearance(self):
"""Get custom clearance"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Custom Clearance',
'view_mode': 'tree,form',
'res_model': 'custom.clearance',
'domain': [('freight_id', '=', self.id)],
'context': "{'create': False}"
}
def track_order(self):
"""Track the order"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Received/Delivered',
'view_mode': 'form',
'target': 'new',
'res_model': 'freight.order.track',
'context': {
'default_freight_id': self.id
}
}
def create_invoice(self):
"""Create invoice"""
lines = []
if self.order_ids:
for order in self.order_ids:
value = (0, 0, {
'name': order.product_id.name,
'price_unit': order.price,
'quantity': order.volume + order.weight,
})
lines.append(value)
if self.route_ids:
for route in self.route_ids:
value = (0, 0, {
'name': route.operation_id.name,
'price_unit': route.sale,
})
lines.append(value)
if self.service_ids:
for service in self.service_ids:
value = (0, 0, {
'name': service.service_id.name,
'price_unit': service.sale,
'quantity': service.qty
})
lines.append(value)
invoice_line = {
'move_type': 'out_invoice',
'partner_id': self.shipper_id.id,
'invoice_user_id': self.env.user.id,
'invoice_origin': self.name,
'ref': self.name,
'invoice_line_ids': lines,
}
inv = self.env['account.move'].create(invoice_line)
result = {
'name': 'action.name',
'type': 'ir.actions.act_window',
'views': [[False, 'form']],
'target': 'current',
'res_id': inv.id,
'res_model': 'account.move',
}
self.state = 'invoice'
return result
def action_cancel(self):
"""Cancel the record"""
if self.state == 'draft' and self.state == 'submit':
self.state = 'cancel'
else:
raise ValidationError("You can't cancel this order")
def get_invoice(self):
"""View the invoice"""
self.ensure_one()
return {
'type': 'ir.actions.act_window',
'name': 'Invoice',
'view_mode': 'tree,form',
'res_model': 'account.move',
'domain': [('ref', '=', self.name)],
'context': "{'create': False}"
}
@api.depends('name')
def compute_count(self):
"""Compute custom clearance and account move's count"""
for rec in self:
if rec.env['custom.clearance'].search([('freight_id', '=', rec.id)]):
rec.clearance_count = rec.env['custom.clearance'].search_count(
[('freight_id', '=', rec.id)])
else:
rec.clearance_count = 0
if rec.env['account.move'].search([('ref', '=', rec.name)]):
rec.invoice_count = rec.env['account.move'].search_count(
[('ref', '=', rec.name)])
else:
rec.invoice_count = 0
def action_submit(self):
"""Submitting order"""
for rec in self:
rec.state = 'submit'
base_url = self.env['ir.config_parameter'].sudo().get_param(
'web.base.url')
Urls = urls.url_join(base_url, 'web#id=%(id)s&model=freight.order&view_type=form' % {'id': self.id})
mail_content = _('Hi %s,<br>'
'The Freight Order %s is Submitted'
'<div style = "text-align: center; '
'margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; font-size: 12px; '
'line-height: 18px; color: #FFFFFF; '
'border-color:#875A7B;text-decoration: none; '
'display: inline-block; margin-bottom: 0px; '
'font-weight: 400;text-align: center; '
'vertical-align: middle; cursor: pointer; '
'white-space: nowrap; background-image: none; '
'background-color: #875A7B; '
'border: 1px solid #875A7B; border-radius:3px;">'
'View %s</a></div>'
) % (rec.agent_id.name, rec.name, Urls, rec.name)
email_to = self.env['res.partner'].search([
('id', 'in', (self.shipper_id.id, self.consignee_id.id,
self.agent_id.id))])
for mail in email_to:
main_content = {
'subject': _('Freight Order %s is Submitted') % self.name,
'author_id': self.env.user.partner_id.id,
'body_html': mail_content,
'email_to': mail.email
}
mail_id = self.env['mail.mail'].create(main_content)
mail_id.mail_message_id.body = mail_content
mail_id.send()
def action_confirm(self):
"""Confirm order"""
for rec in self:
clearance = self.env['custom.clearance'].search([
('freight_id', '=', self.id)])
if clearance:
if clearance.state == 'confirm':
rec.state = 'confirm'
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
Urls = urls.url_join(base_url, 'web#id=%(id)s&model=freight.order&view_type=form' % {'id': self.id})
mail_content = _('Hi %s,<br> '
'The Freight Order %s is Confirmed '
'<div style = "text-align: center; '
'margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; '
'font-size: 12px; line-height: 18px; '
'color: #FFFFFF; border-color:#875A7B; '
'text-decoration: none; '
'display: inline-block; '
'margin-bottom: 0px; font-weight: 400;'
'text-align: center; '
'vertical-align: middle; '
'cursor: pointer; white-space: nowrap; '
'background-image: none; '
'background-color: #875A7B; '
'border: 1px solid #875A7B; '
'border-radius:3px;">'
'View %s</a></div>'
) % (rec.agent_id.name, rec.name,
Urls, rec.name)
email_to = self.env['res.partner'].search([
('id', 'in', (self.shipper_id.id,
self.consignee_id.id, self.agent_id.id))])
for mail in email_to:
main_content = {
'subject': _('Freight Order %s is Confirmed') % self.name,
'author_id': self.env.user.partner_id.id,
'body_html': mail_content,
'email_to': mail.email
}
mail_id = self.env['mail.mail'].create(main_content)
mail_id.mail_message_id.body = mail_content
mail_id.send()
elif clearance.state == 'draft':
raise ValidationError("the custom clearance ' %s ' is "
"not confirmed" % clearance.name)
else:
raise ValidationError("Create a custom clearance for %s" % rec.name)
for line in rec.order_ids:
line.container_id.state = 'reserve'
def action_done(self):
"""Mark order as done"""
for rec in self:
base_url = self.env['ir.config_parameter'].sudo().get_param(
'web.base.url')
Urls = urls.url_join(base_url, 'web#id=%(id)s&model=freight.order&view_type=form' % {'id': self.id})
mail_content = _('Hi %s,<br>'
'The Freight Order %s is Completed'
'<div style = "text-align: center; '
'margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; font-size: 12px; '
'line-height: 18px; color: #FFFFFF; '
'border-color:#875A7B;text-decoration: none; '
'display: inline-block; '
'margin-bottom: 0px; font-weight: 400;'
'text-align: center; vertical-align: middle; '
'cursor: pointer; white-space: nowrap; '
'background-image: none; '
'background-color: #875A7B; '
'border: 1px solid #875A7B; border-radius:3px;">'
'View %s</a></div>'
) % (rec.agent_id.name, rec.name, Urls, rec.name)
email_to = self.env['res.partner'].search([
('id', 'in', (self.shipper_id.id, self.consignee_id.id,
self.agent_id.id))])
for mail in email_to:
main_content = {
'subject': _('Freight Order %s is completed') % self.name,
'author_id': self.env.user.partner_id.id,
'body_html': mail_content,
'email_to': mail.email
}
mail_id = self.env['mail.mail'].create(main_content)
mail_id.mail_message_id.body = mail_content
mail_id.send()
self.state = 'done'
for line in rec.order_ids:
line.container_id.state = 'available'
class FreightOrderLine(models.Model):
_name = 'freight.order.line'
order_id = fields.Many2one('freight.order')
container_id = fields.Many2one('freight.container', string='Container',
domain="[('state', '=', 'available')]")
product_id = fields.Many2one('product.product', string='Goods')
billing_type = fields.Selection([('weight', 'Weight'),
('volume', 'Volume')], string="Billing On")
pricing_id = fields.Many2one('freight.price', string='Pricing')
price = fields.Float('Unit Price')
total_price = fields.Float('Total Price')
volume = fields.Float('Volume')
weight = fields.Float('Weight')
@api.constrains('weight')
def _check_weight(self):
"""Checking the weight of containers"""
for rec in self:
if rec.container_id and rec.billing_type:
if rec.billing_type == 'weight':
if rec.container_id.weight < rec.weight:
raise ValidationError(
'The weight is must be less '
'than or equal to %s' % (rec.container_id.weight))
@api.constrains('volume')
def _check_volume(self):
"""Checking the volume of containers"""
for rec in self:
if rec.container_id and rec.billing_type:
if rec.billing_type == 'volume':
if rec.container_id.volume < rec.volume:
raise ValidationError(
'The volume is must be less '
'than or equal to %s' % (rec.container_id.volume))
@api.onchange('pricing_id', 'billing_type')
def onchange_price(self):
"""Calculate the weight and volume of container"""
for rec in self:
if rec.billing_type == 'weight':
rec.volume = 0.00
rec.price = rec.pricing_id.weight
elif rec.billing_type == 'volume':
rec.weight = 0.00
rec.price = rec.pricing_id.volume
@api.onchange('pricing_id', 'billing_type', 'volume', 'weight')
def onchange_total_price(self):
"""Calculate sub total price"""
for rec in self:
if rec.billing_type and rec.pricing_id:
if rec.billing_type == 'weight':
rec.total_price = rec.weight * rec.price
elif rec.billing_type == 'volume':
rec.total_price = rec.volume * rec.price
class FreightOrderRouteLine(models.Model):
_name = 'freight.order.routes.line'
route_id = fields.Many2one('freight.order')
operation_id = fields.Many2one('freight.routes', required=True)
source_loc = fields.Many2one('freight.port', 'Source Location')
destination_loc = fields.Many2one('freight.port', 'Destination Location')
transport_type = fields.Selection([('land', 'Land'), ('air', 'Air'),
('water', 'Water')], "Transport",
required=True)
sale = fields.Float('Sale')
@api.onchange('operation_id', 'transport_type')
def _onchange_operation_id(self):
"""calculate the price of route operation"""
for rec in self:
if rec.operation_id and rec.transport_type:
if rec.transport_type == 'land':
rec.sale = rec.operation_id.land_sale
elif rec.transport_type == 'air':
rec.sale = rec.operation_id.air_sale
elif rec.transport_type == 'water':
rec.sale = rec.operation_id.water_sale
class FreightOrderServiceLine(models.Model):
_name = 'freight.order.service'
line_id = fields.Many2one('freight.order')
service_id = fields.Many2one('freight.service', required=True)
partner_id = fields.Many2one('res.partner', string="Vendor")
qty = fields.Float('Quantity')
cost = fields.Float('Cost')
sale = fields.Float('Sale')
total_sale = fields.Float('Total Sale')
@api.onchange('service_id', 'partner_id')
def _onchange_partner_id(self):
"""Calculate the price of services"""
for rec in self:
if rec.service_id:
if rec.partner_id:
if rec.service_id.line_ids:
for service in rec.service_id.line_ids:
if rec.partner_id == service.partner_id:
rec.sale = service.sale
else:
rec.sale = rec.service_id.sale_price
else:
rec.sale = rec.service_id.sale_price
else:
rec.sale = rec.service_id.sale_price
@api.onchange('qty', 'sale')
def _onchange_qty(self):
"""Calculate the subtotal of route operation"""
for rec in self:
rec.total_sale = rec.qty * rec.sale
class Tracking(models.Model):
_name = 'freight.track'
source_loc = fields.Many2one('freight.port', 'Source Location')
destination_loc = fields.Many2one('freight.port', 'Destination Location')
transport_type = fields.Selection([('land', 'Land'), ('air', 'Air'),
('water', 'Water')], "Transport")
track_id = fields.Many2one('freight.order')
date = fields.Date('Date')
type = fields.Selection([('received', 'Received'),
('delivered', 'Delivered')], 'Received/Delivered')

56
freight_management_system/model/freight_port.py

@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import fields, models
class FreightPort(models.Model):
_name = 'freight.port'
name = fields.Char('Name')
code = fields.Char('Code')
state_id = fields.Many2one('res.country.state',
domain="[('country_id', '=', country_id)]")
country_id = fields.Many2one('res.country', required=True)
active = fields.Boolean('Active', default=True)
land = fields.Boolean('Land')
air = fields.Boolean('Air')
water = fields.Boolean('Water')
class FreightPricing(models.Model):
_name = 'freight.price'
name = fields.Char('Name', required=True)
volume = fields.Float('Volume Price', required=True)
weight = fields.Float('Weight Price', required=True)
class FreightRoutes(models.Model):
_name = 'freight.routes'
name = fields.Char('Name', required=True)
active = fields.Boolean('Active', default=True)
land_sale = fields.Float('Sale Price for Land', required=True)
air_sale = fields.Float('Sale Price for Air', required=True)
water_sale = fields.Float('Sale Price for Water', required=True)

98
freight_management_system/model/order_track.py

@ -0,0 +1,98 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from werkzeug import urls
from odoo import fields, models, _
class FreightTracking(models.Model):
_name = 'freight.order.track'
date = fields.Date('Date', default=fields.Date.today())
freight_id = fields.Many2one('freight.order')
source_loc = fields.Many2one('freight.port', 'Source Location')
destination_loc = fields.Many2one('freight.port', 'Destination Location')
transport_type = fields.Selection([('land', 'Land'), ('air', 'Air'),
('water', 'Water')], "Transport")
type = fields.Selection([('received', 'Received'),
('delivered', 'Delivered')], 'Received/Delivered')
def order_submit(self):
"""Create tracking details of order"""
self.env['freight.track'].create({
'track_id': self.freight_id.id,
'source_loc': self.source_loc.id,
'destination_loc': self.destination_loc.id,
'transport_type': self.transport_type,
'date': self.date,
'type': self.type,
})
for rec in self.freight_id:
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
Urls = urls.url_join(base_url, 'web#id=%(id)s&model=freight.order&view_type=form' % {'id': self.id})
mail_content = _('Hi<br>'
'The Freight Order %s is %s at %s'
'<div style = "text-align: center; '
'margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; font-size: 12px; '
'line-height: 18px; color: #FFFFFF; '
'border-color:#875A7B;text-decoration: none; '
'display: inline-block; '
'margin-bottom: 0px; font-weight: 400;'
'text-align: center; vertical-align: middle; '
'cursor: pointer; white-space: nowrap; '
'background-image: none; '
'background-color: #875A7B; '
'border: 1px solid #875A7B; border-radius:3px;">'
'View %s</a></div>'
) % (rec.name, self.type,
self.destination_loc.name, Urls, rec.name)
email_to = self.env['res.partner'].search([
('id', 'in', (rec.shipper_id.id, rec.consignee_id.id,
rec.agent_id.id))])
for mail in email_to:
main_content = {
'subject': _('Freight Order %s is %s at %s') % (rec.name,
self.type,
self.destination_loc.name,),
'author_id': rec.env.user.partner_id.id,
'body_html': mail_content,
'email_to': mail.email
}
mail_id = rec.env['mail.mail'].create(main_content)
mail_id.mail_message_id.body = mail_content
mail_id.send()
class FreightTrackingLine(models.Model):
_name = 'freight.order.track.line'
track_line_id = fields.Many2one('freight.order.track')
source_loc = fields.Many2one('freight.port', 'Source Location')
destination_loc = fields.Many2one('freight.port', 'Destination Location')
transport_type = fields.Selection([('land', 'Land'), ('air', 'Air'),
('water', 'Water')], "Transport")
date = fields.Date('Date')
type = fields.Selection([('receive', 'Received'), ('deliver', 'Delivered')],
'Received/Delivered')

137
freight_management_system/report/report_order.xml

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="report_freight" model="ir.actions.report">
<field name="name">Freight Order</field>
<field name="model">freight.order</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">freight_management_system.report_freight_order</field>
<field name="report_file">freight_management_system.report_freight_order</field>
<field name="print_report_name">'Freight Order - %s' % object.name</field>
<field name="binding_model_id" ref="model_freight_order"/>
<field name="binding_type">report</field>
</record>
<template id="report_freight_order">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="web.external_layout">
<center><b><h3>Order Details</h3></b></center>
<b><h3><t t-esc="doc.name"/></h3></b><br/>
<div name="customer">
<strong>Customer:</strong>
</div>
<div name="customer_details">
<div t-esc="doc.shipper_id.name"/>
<div t-esc="doc.shipper_id.street"/>
<div t-esc="doc.shipper_id.city"/>
<t t-esc="doc.shipper_id.state_id.name"/>
<t t-esc="doc.shipper_id.zip"/>
<div t-esc="doc.shipper_id.country_id.name"/>
</div><br/>
<table class="table o_main_table">
<tbody class="order_body">
<tr>
<td name="loading_port"><strong>Loading Port</strong></td>
<td name="loading"><span t-field="doc.loading_port_id.name"/></td>
<td name="destination_port"><strong>Destination Port</strong></td>
<td name="destination"><span t-field="doc.discharging_port_id.name"/></td>
</tr>
<tr>
<td name="direction"><strong>Direction</strong></td>
<td name="direction_name"><span t-field="doc.type"/></td>
<td name="transport"><strong>Transport</strong></td>
<td name="transport_name"><span t-field="doc.transport_type"/></td>
</tr>
<tr>
<td name="date"><strong>Date</strong></td>
<td name="date"><span t-field="doc.order_date"/></td>
<td name="expected"><strong>Expected Date</strong></td>
<td name="expected_name"><span t-field="doc.expected_date"/></td>
</tr>
</tbody>
</table>
<div name="orders">
<strong>Orders:</strong>
</div>
<table class="table o_main_table">
<thead style="display: table-row-group">
<tr>
<th name="th_container" class="text-left">Container</th>
<th name="th_goods" class="text-left">Goods</th>
<th name="th_billing_on" class="text-left">Billing On</th>
<th name="th_pricing" class="text-left">Pricing</th>
<th name="th_volume" class="text-left">Volume</th>
<th name="th_weight" class="text-left">Weight</th>
<th name="th_unit_price" class="text-left">Unit Price</th>
<th name="th_total_price" class="text-left">Total Price</th>
</tr>
</thead>
<tbody>
<tr t-att-class="'bg-200 font-weight-bold'" t-foreach="doc.order_ids" t-as="order">
<td t-esc="order.container_id.name"/>
<td t-esc="order.product_id.name"/>
<td><span t-field="order.billing_type"/></td>
<td t-esc="order.pricing_id.name"/>
<td t-esc="order.volume"/>
<td t-esc="order.weight"/>
<td t-esc="order.price"/>
<td t-esc="order.total_price"/>
</tr>
</tbody>
</table>
<t name="th_operation" class="text-left" colspan="8">Total</t>
<div name="route">
<strong>Route:</strong>
</div>
<table class="table o_main_table">
<thead style="display: table-row-group">
<tr>
<th name="th_operation" class="text-left">Operation</th>
<th name="th_source" class="text-left">Source location</th>
<th name="th_destination" class="text-left">Destination Location</th>
<th name="th_transport" class="text-left">Transport</th>
<th name="th_price" class="text-left">Price</th>
</tr>
</thead>
<tbody>
<tr t-att-class="'bg-200 font-weight-bold'" t-foreach="doc.route_ids" t-as="route">
<td t-esc="route.operation_id.name"/>
<td t-esc="route.source_loc.name"/>
<td t-esc="route.destination_loc.name"/>
<td><span t-field="route.transport_type"/></td>
<td t-esc="route.sale"/>
</tr>
</tbody>
</table>
<br/>
<div name="route">
<strong>Service:</strong>
</div>
<table class="table o_main_table">
<thead style="display: table-row-group">
<tr>
<th name="th_vendor" class="text-left">Vendor</th>
<th name="th_service" class="text-left">Service</th>
<th name="th_quantity" class="text-left">Quantity</th>
<th name="th_sale" class="text-left">Sale</th>
<th name="th_sale_total" class="text-left">Total sale</th>
</tr>
</thead>
<tbody>
<tr t-att-class="'bg-200 font-weight-bold'" t-foreach="doc.service_ids" t-as="service">
<td t-esc="service.partner_id.name"/>
<td t-esc="service.service_id.name"/>
<td t-esc="service.qty"/>
<td t-esc="service.sale"/>
<td t-esc="service.total_sale"/>
</tr>
</tbody>
</table>
</t>
</t>
</t>
</template>
</data>
</odoo>

81
freight_management_system/report/report_tracking.xml

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="report_freight_tracking" model="ir.actions.report">
<field name="name">Order Tracking</field>
<field name="model">freight.order</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">freight_management_system.report_freight_track</field>
<field name="report_file">freight_management_system.report_freight_track</field>
<field name="print_report_name">'Order Tracking - %s' % object.name</field>
<field name="binding_model_id" ref="model_freight_order"/>
<field name="binding_type">report</field>
</record>
<template id="report_freight_track">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="web.external_layout">
<center><b><h3>Order Track Details</h3></b></center>
<b><h3><t t-esc="doc.name"/></h3></b><br/>
<div name="customer">
<strong>Customer:</strong>
</div>
<div name="customer_details">
<div t-esc="doc.shipper_id.name"/>
<div t-esc="doc.shipper_id.street"/>
<div t-esc="doc.shipper_id.city"/>
<t t-esc="doc.shipper_id.state_id.name"/>
<t t-esc="doc.shipper_id.zip"/>
<div t-esc="doc.shipper_id.country_id.name"/>
</div><br/>
<table class="table o_main_table">
<tbody class="order_body">
<tr>
<td name="loading_port"><strong>Loading Port</strong></td>
<td name="loading"><span t-field="doc.loading_port_id.name"/></td>
<td name="destination_port"><strong>Destination Port</strong></td>
<td name="destination"><span t-field="doc.discharging_port_id.name"/></td>
</tr>
<tr>
<td name="direction"><strong>Direction</strong></td>
<td name="direction_name"><span t-field="doc.type"/></td>
<td name="transport"><strong>Transport</strong></td>
<td name="transport_name"><span t-field="doc.transport_type"/></td>
</tr>
<tr>
<td name="date"><strong>Date</strong></td>
<td name="date"><span t-field="doc.order_date"/></td>
<td name="expected"><strong>Expected Date</strong></td>
<td name="expected_name"><span t-field="doc.expected_date"/></td>
</tr>
</tbody>
</table>
<div name="track">
<strong>Track:</strong>
</div>
<table class="table o_main_table">
<thead style="display: table-row-group">
<tr>
<th name="th_source" class="text-left">Source location</th>
<th name="th_destination" class="text-left">Destination Location</th>
<th name="th_operation" class="text-left">Transport</th>
<th name="th_transport" class="text-left">Date</th>
<th name="th_price" class="text-left">Status</th>
</tr>
</thead>
<tbody>
<tr t-att-class="'bg-200 font-weight-bold'" t-foreach="doc.track_ids" t-as="track">
<td t-esc="track.source_loc.name"/>
<td t-esc="track.destination_loc.name"/>
<td><span t-field="track.transport_type"/></td>
<td t-esc="track.date"/>
<td><span t-field="track.type"/></td>
</tr>
</tbody>
</table>
</t>
</t>
</t>
</template>
</data>
</odoo>

18
freight_management_system/security/ir.model.access.csv

@ -0,0 +1,18 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_freight_order,freight.order,model_freight_order,base.group_user,1,1,1,1
access_freight_order_line,freight.order.line,model_freight_order_line,base.group_user,1,1,1,1
access_freight_port,freight.port,model_freight_port,base.group_user,1,1,1,1
access_freight_container,freight.container,model_freight_container,base.group_user,1,1,1,1
access_freight_price,freight.price,model_freight_price,base.group_user,1,1,1,1
access_freight_routes,freight.routes,model_freight_routes,base.group_user,1,1,1,1
access_freight_order_routes_line,freight.order.routes.line,model_freight_order_routes_line,base.group_user,1,1,1,1
access_freight_service,freight.service,model_freight_service,base.group_user,1,1,1,1
access_freight_service_line,freight.service.line,model_freight_service_line,base.group_user,1,1,1,1
access_freight_order_service,freight.order.service,model_freight_order_service,base.group_user,1,1,1,1
access_custom_clearance,custom.clearance,model_custom_clearance,base.group_user,1,1,1,1
access_custom_clearance_line,custom.clearance.line,model_custom_clearance_line,base.group_user,1,1,1,1
access_freight_track,freight.track,model_freight_track,base.group_user,1,1,1,1
access_freight_order_track,freight.order.track,model_freight_order_track,base.group_user,1,1,1,1
access_custom_clearance_revision_wizard,custom.clearance.revision.wizard,model_custom_clearance_revision_wizard,base.group_user,1,1,1,1
access_custom_clearance_revision,custom.clearance.revision,model_custom_clearance_revision,base.group_user,1,1,1,1
access_freight_order_track_line,freight.order.track_line,model_freight_order_track_line,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_freight_order freight.order model_freight_order base.group_user 1 1 1 1
3 access_freight_order_line freight.order.line model_freight_order_line base.group_user 1 1 1 1
4 access_freight_port freight.port model_freight_port base.group_user 1 1 1 1
5 access_freight_container freight.container model_freight_container base.group_user 1 1 1 1
6 access_freight_price freight.price model_freight_price base.group_user 1 1 1 1
7 access_freight_routes freight.routes model_freight_routes base.group_user 1 1 1 1
8 access_freight_order_routes_line freight.order.routes.line model_freight_order_routes_line base.group_user 1 1 1 1
9 access_freight_service freight.service model_freight_service base.group_user 1 1 1 1
10 access_freight_service_line freight.service.line model_freight_service_line base.group_user 1 1 1 1
11 access_freight_order_service freight.order.service model_freight_order_service base.group_user 1 1 1 1
12 access_custom_clearance custom.clearance model_custom_clearance base.group_user 1 1 1 1
13 access_custom_clearance_line custom.clearance.line model_custom_clearance_line base.group_user 1 1 1 1
14 access_freight_track freight.track model_freight_track base.group_user 1 1 1 1
15 access_freight_order_track freight.order.track model_freight_order_track base.group_user 1 1 1 1
16 access_custom_clearance_revision_wizard custom.clearance.revision.wizard model_custom_clearance_revision_wizard base.group_user 1 1 1 1
17 access_custom_clearance_revision custom.clearance.revision model_custom_clearance_revision base.group_user 1 1 1 1
18 access_freight_order_track_line freight.order.track_line model_freight_order_track_line base.group_user 1 1 1 1

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
freight_management_system/static/description/assets/modules/budget_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
freight_management_system/static/description/assets/modules/credit_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
freight_management_system/static/description/assets/modules/employee_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
freight_management_system/static/description/assets/modules/export_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
freight_management_system/static/description/assets/modules/gantt_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
freight_management_system/static/description/assets/modules/quotation_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

BIN
freight_management_system/static/description/assets/screenshots/freight_9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
freight_management_system/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
freight_management_system/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

762
freight_management_system/static/description/index.html

@ -0,0 +1,762 @@
<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>
</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;">
Freight 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 All freight operation
</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;">
This module helps you to manage all freight operations by Air
, Ocean, and Land.It is a used to manage all
aspects of your freight operations.
</p>
</div>
</p>
</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;">
Configure Freight Orders</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;">
Configure the Freight Operation Routes</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;">
Configure Freight Operation Services</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;">
Freight Operation Tracking</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;">
Custom Clearance And Custom Clearance Revision</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;">
Freight Order Reports</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;">
Freight Order Track Details</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;">
Freight Orders</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
After installation open freight management go to shipping, then create the fright orders. </p>
<img src="assets/screenshots/freight_1.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;">
Freight order lines</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Add the fright order lines. Select the container, billing on and pricing suitable for the shipping.
Based on the Billing on and Pricing it will calculate the total price.
If we add more goods than container capacity it's show the warning message.
</p>
<img src="assets/screenshots/freight_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;">
Freight Operation Routes</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Defining the routes for the shipping. Also we can add the operations for the routes.
</p>
<img src="assets/screenshots/freight_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;">
Freight Operation Services</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Defining the services for the shipping. Also we can add the Services. We can calculate the total sale amount based on tha vendor and the services provided by the vendor.
</p>
<img src="assets/screenshots/freight_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;">
Custom Clearance</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
By clicking the custom clearance button we can create the custom clearance for the freight order.
</br>
We can view the custom clearance in custom clearance menu under the custom.<br/>
After Conforming the custom clearance, we can confirm our fright order.
</p>
<img src="assets/screenshots/freight_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;">
Custom Clearance Revision</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
We can create the revision for the custom clearance by clicking the revision button.
</br>
We can view the custom clearance revision from the Revision smart button.
</p>
<img src="assets/screenshots/freight_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;">
Freight Order Invoice</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
We can create the invoice for the freight order by clicking the invoice button.
</p>
<img src="assets/screenshots/freight_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;">
Freight Order Tracking</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
we can track our order by click the tracking button.
</p>
<img src="assets/screenshots/freight_8.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<br/>
<img src="assets/screenshots/freight_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;">
Freight Order Reporting</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
from the action bar we can print the fright order report and order tracked report.
</p>
<img src="assets/screenshots/freight_10.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<br/>
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1rem !important;">
Freight Order</h4>
<img src="assets/screenshots/freight_11.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" />
<h4 class="mt-3"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1rem !important;">
Freight Order Tracking</h4>
<img src="assets/screenshots/freight_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;">
Configure Ports</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Under configuration menu we can see a port menu, for configuring our ports. Here we can specify the port location, and available transport methods.
</p>
<img src="assets/screenshots/freight_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;">
Configure Pricing</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Under configuration menu we can see a Pricing list menu, it is used to configuring the pricing. Here we can specify the pricing in both weight and volume.
</p>
<img src="assets/screenshots/freight_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;">
Configure Containers</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Under configuration menu we can see a Containers menu, it is used to configuring the Container. Here we can specify
the weight and volume. If we add more goods than container capacity it's show the warning message. When once order
is confirmed for particular container then we can't be used it for another order.
</p>
<img src="assets/screenshots/freight_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;">
Configure Services</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Under configuration menu we can see a Services menu, it is used to configuring the Services. Here we can set specific amount for particular vendor.
</p>
<img src="assets/screenshots/freight_15.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 #714B67 !important; background-color: #714B67 !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/15.0/export_stockinfo_xls/" 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/export_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/15.0/custom_gantt_view/" 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/gantt_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/15.0/sales_credit_limit/" 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/credit_image.png">
</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/15.0/base_account_budget/" 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/budget_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/15.0/product_to_quotation/" 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/quotation_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/15.0/employee_documents_expiry/" 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/employee_image.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 END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Industries</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</section>
<!-- END OF 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>

75
freight_management_system/views/custom_clearance.xml

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="custom_clearance_tree_view" model="ir.ui.view">
<field name="name">Custom Clearance</field>
<field name="model">custom.clearance</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="freight_id"/>
</tree>
</field>
</record>
<record id="custom_clearance_form_view" model="ir.ui.view">
<field name="name">Custom Clearance</field>
<field name="model">custom.clearance</field>
<field name="arch" type="xml">
<form>
<header>
<button name="action_confirm" string="Confirm" type="object" class="oe_highlight" states="draft"/>
<button name="action_revision" string="Revision" type="object" class="oe_highlight" states="confirm"/>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm" readonly="1"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button" type="object" name="get_revision"
icon="fa-id-card-o" string="Revision">
</button>
</div>
<group>
<field name="name"/>
</group>
<group>
<group>
<field name="freight_id"/>
<field name="date"/>
</group>
<group>
<field name="agent_id"/>
<field name="loading_port_id" />
<field name="discharging_port_id" />
</group>
</group>
<notebook>
<page string="Custom Clearance">
<field name="line_ids">
<tree string="Order Lines" editable="bottom">
<field name="name"/>
<field name="document"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_custom_clearance" model="ir.actions.act_window">
<field name="name">Custom Clearance</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">custom.clearance</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new custom clearance
</p>
</field>
</record>
<menuitem id="menu_custom" name="Custom" parent="menu_freight_root" sequence="2"/>
<menuitem id="menu_custom_clearance" name="Custom Clearance" parent="menu_custom" sequence="2" action="action_custom_clearance"/>
</data>
</odoo>

122
freight_management_system/views/freight_container.xml

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="freight_container_tree_view" model="ir.ui.view">
<field name="name">Container</field>
<field name="model">freight.container</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="active" widget="boolean_toggle"/>
</tree>
</field>
</record>
<record id="freight_container_form_view" model="ir.ui.view">
<field name="name">Container</field>
<field name="model">freight.container</field>
<field name="arch" type="xml">
<form>
<header>
<field name="state" widget="statusbar" readonly="1"/>
</header>
<sheet>
<group>
<group>
<field name="name"/>
<field name="size"/>
<field name="weight"/>
<field name="volume"/>
</group>
<group>
<field name="code"/>
<field name="size_uom_id"/>
<field name="weight_uom_id"/>
<field name="volume_uom_id"/>
<field name="active" widget="boolean_toggle"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_freight_container_filter" model="ir.ui.view">
<field name="name">freight.Container.search</field>
<field name="model">freight.container</field>
<field name="arch" type="xml">
<search>
<filter string="Inactive" name="inactive" domain="[('active','=',False)]"/>
</search>
</field>
</record>
<record id="action_container_port" model="ir.actions.act_window">
<field name="name">Freight Container</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">freight.container</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new freight container
</p>
</field>
</record>
<record id="freight_service_tree_view" model="ir.ui.view">
<field name="name">Service</field>
<field name="model">freight.service</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="sale_price"/>
</tree>
</field>
</record>
<record id="freight_Service_form_view" model="ir.ui.view">
<field name="name">Service</field>
<field name="model">freight.service</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
</group>
<group>
<group>
<field name="sale_price"/>
</group>
</group>
<notebook>
<page string="Vendors">
<field name="line_ids">
<tree string="Vendors" editable="bottom">
<field name="partner_id"/>
<field name="sale"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_service_freight" model="ir.actions.act_window">
<field name="name">Freight Service</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">freight.service</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new freight service
</p>
</field>
</record>
<menuitem id="menu_freight_container" name="Container" parent="menu_configuration" sequence="2" action="action_container_port"/>
<menuitem id="menu_freight_service" name="Services" parent="menu_configuration" sequence="2" action="action_service_freight"/>
</data>
</odoo>

181
freight_management_system/views/freight_order.xml

@ -0,0 +1,181 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="freight_order_tree_view" model="ir.ui.view">
<field name="name">Freight Order</field>
<field name="model">freight.order</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="type"/>
<field name="transport_type"/>
</tree>
</field>
</record>
<record id="freight_order_form_view" model="ir.ui.view">
<field name="name">Freight Order</field>
<field name="model">freight.order</field>
<field name="arch" type="xml">
<form>
<header>
<button name="create_custom_clearance" string="Custom Clearance" type="object" class="oe_highlight"
data-hotkey="w" attrs="{'invisible': [('clearance', '=', True)]}"/>
<button name="action_submit" string="Submit" type="object" class="oe_highlight"
data-hotkey="w" states="draft"/>
<button name="action_confirm" string="Confirm" type="object" class="oe_highlight"
data-hotkey="w" states="submit"/>
<button name="create_invoice" string="Invoice" type="object" class="oe_highlight" states="confirm"
data-hotkey="w"/>
<button name="track_order" string="Tracking" type="object" class="oe_highlight" states="confirm,invoice"
data-hotkey="w"/>
<button name="action_done" string="Done" type="object" class="oe_highlight" states="confirm,invoice"
data-hotkey="w"/>
<button name="action_cancel" string="Cancel" type="object" states="draft,submit,confirm,invoice"
data-hotkey="w"/>
<field name="state" widget="statusbar" statusbar_visible="draft,submit,confirm" readonly="1"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button" type="object" name="get_custom_clearance"
icon="fa-id-card-o">
<field string="Clearance" name="clearance_count" widget="statinfo"/>
</button>
<button class="oe_stat_button" type="object" name="get_invoice"
icon="fa-pencil-square-o">
<field string="Invoice" name="invoice_count" widget="statinfo"/>
</button>
</div>
<div class="oe_title">
<h1 class="mt0" >
<field name="name"/>
</h1>
</div>
<group>
<group>
<field name="shipper_id"/>
<field name="consignee_id"/>
<field name="order_date"/>
</group>
<group>
<field name="clearance" invisible="True"/>
<field name="type"/>
<field name="transport_type"/>
<field name="land_type" attrs="{'invisible': [('transport_type', '!=', 'land')]}"/>
<field name="water_type" attrs="{'invisible': [('transport_type', '!=', 'water')]}"/>
</group>
</group>
<group>
<group>
<field name="loading_port_id"/>
</group>
<group>
<field name="discharging_port_id"/>
</group>
</group>
<group>
<group>
<field name="agent_id"/>
</group>
<group>
<field name="expected_date"/>
</group>
</group>
<notebook>
<page string="Order">
<field name="order_ids">
<tree string="Order Lines" editable="bottom">
<field name="container_id"/>
<field name="product_id"/>
<field name="billing_type"/>
<field name="pricing_id"/>
<field name="volume" attrs="{'invisible': [('billing_type', '!=', 'volume')]}"/>
<field name="weight" attrs="{'invisible': [('billing_type', '!=', 'weight')]}"/>
<field name="price"/>
<field name="total_price"/>
</tree>
</field>
<group class="oe_subtotal_footer oe_right" colspan="2">
<div class="oe_inline o_td_label">
<label for="total_volume"/>
</div>
<field name="total_volume" nolabel="1"/>
<div class="oe_inline o_td_label">
<label for="total_weight"/>
</div>
<field name="total_weight" nolabel="1"/>
<div class="oe_inline o_td_label">
<label for="total_order_price"/>
</div>
<field name="total_order_price" nolabel="1"/>
</group>
</page>
<page string="Routes">
<field name="route_ids">
<tree string="Routes" editable="bottom">
<field name="operation_id"/>
<field name="source_loc"/>
<field name="destination_loc"/>
<field name="transport_type"/>
<field name="sale"/>
</tree>
</field>
<group class="oe_subtotal_footer oe_right" colspan="2">
<div class="oe_inline o_td_label">
<label for="total_route_sale"/>
</div>
<field name="total_route_sale" nolabel="1"/>
</group>
</page>
<page string="Services">
<field name="service_ids">
<tree string="Services" editable="bottom">
<field name="partner_id"/>
<field name="service_id"/>
<field name="qty"/>
<field name="sale"/>
<field name="total_sale"/>
</tree>
</field>
<group class="oe_subtotal_footer oe_right" colspan="2">
<div class="oe_inline o_td_label">
<label for="total_service_sale"/>
</div>
<field name="total_service_sale" nolabel="1"/>
</group>
</page>
<page string="Track">
<field name="track_ids">
<tree string="Services" editable="bottom" create="0">
<field name="source_loc"/>
<field name="destination_loc"/>
<field name="transport_type"/>
<field name="date"/>
<field name="type"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="action_freight_order" model="ir.actions.act_window">
<field name="name">Freight Order</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">freight.order</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new freight order
</p>
</field>
</record>
<menuitem id="menu_freight_root" name="Freight Management" sequence="4" />
<menuitem id="menu_freight_order" name="Shipping" parent="menu_freight_root" sequence="2" action="action_freight_order"/>
</data>
</odoo>

159
freight_management_system/views/freight_port.xml

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="freight_port_tree_view" model="ir.ui.view">
<field name="name">Port</field>
<field name="model">freight.port</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="active" widget="boolean_toggle"/>
</tree>
</field>
</record>
<record id="freight_port_form_view" model="ir.ui.view">
<field name="name">Port</field>
<field name="model">freight.port</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name"/>
<field name="code"/>
<field name="country_id"/>
<field name="state_id"/>
</group>
<group>
<field name="active" widget="boolean_toggle"/>
<field name="land" />
<field name="air" />
<field name="water" />
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_freight_port_filter" model="ir.ui.view">
<field name="name">freight.port.search</field>
<field name="model">freight.port</field>
<field name="arch" type="xml">
<search>
<filter string="Inactive" name="inactive" domain="[('active','=',False)]"/>
</search>
</field>
</record>
<record id="action_freight_port" model="ir.actions.act_window">
<field name="name">Freight Port</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">freight.port</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new freight port
</p>
</field>
</record>
<record id="freight_price_tree_view" model="ir.ui.view">
<field name="name">Price</field>
<field name="model">freight.price</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="volume"/>
<field name="weight"/>
</tree>
</field>
</record>
<record id="freight_price_form_view" model="ir.ui.view">
<field name="name">Price</field>
<field name="model">freight.price</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
</group>
<group>
<group>
<field name="weight"/>
</group>
<group>
<field name="volume"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_freight_price" model="ir.actions.act_window">
<field name="name">Freight Price</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">freight.price</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new freight price
</p>
</field>
</record>
<record id="freight_routes_tree_view" model="ir.ui.view">
<field name="name">Routes</field>
<field name="model">freight.routes</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
</tree>
</field>
</record>
<record id="freight_routes_form_view" model="ir.ui.view">
<field name="name">Routes</field>
<field name="model">freight.routes</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
</group>
<group>
<group>
<field name="land_sale"/>
<field name="air_sale"/>
<field name="water_sale"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_freight_routes" model="ir.actions.act_window">
<field name="name">Freight Routes</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">freight.routes</field>
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new freight routes
</p>
</field>
</record>
<menuitem id="menu_configuration" name="Configuration" sequence="4" parent="menu_freight_root" />
<menuitem id="menu_freight_port" name="Ports" parent="menu_configuration" sequence="2" action="action_freight_port"/>
<menuitem id="menu_freight_price" name="Pricing List" parent="menu_configuration" sequence="2" action="action_freight_price"/>
<menuitem id="menu_freight_routes" name="Route Operations" parent="menu_configuration" sequence="2" action="action_freight_routes"/>
</data>
</odoo>

50
freight_management_system/views/order_track.xml

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="view_freight_order_track" model="ir.ui.view">
<field name="name">Track</field>
<field name="model">freight.order.track</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="freight_id" readonly="1"/>
</group>
<group>
<field name="date"/>
</group>
</group>
<group>
<group>
<field name="type"/>
<field name="destination_loc"/>
</group>
<group>
<field name="transport_type"/>
<field name="source_loc"/>
</group>
</group>
</sheet>
<footer>
<button name="order_submit" string="Submit" type="object" class="btn-primary" data-hotkey="q"/>
<button string="Cancel" class="btn-secondary" special="cancel" data-hotkey="z"/>
</footer>
</form>
</field>
</record>
<record id="action_order_track" model="ir.actions.act_window">
<field name="name">Track Order</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">freight.order.track</field>
<field name="view_mode">form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new track order
</p>
</field>
</record>
</data>
</odoo>

23
freight_management_system/wizard/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import custom_revision

89
freight_management_system/wizard/custom_revision.py

@ -0,0 +1,89 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Megha K (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from werkzeug import urls
from odoo import models, fields, _
class CustomClearanceRevisionReason(models.TransientModel):
_name = 'custom.clearance.revision.wizard'
_description = 'Custom Clearance Revision'
name = fields.Text('Reason', required=True)
custom_id = fields.Many2one('custom.clearance')
text = fields.Char()
def create_revision(self):
"""create revision"""
for rec in self.custom_id:
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
Urls = urls.url_join(base_url,
'web#id=%(id)s&model=custom.clearance&view_type=form' % {'id': self.custom_id.id})
Urls_ = urls.url_join(base_url,
'web#id=%(id)s&model=freight.order&view_type=form' % {'id': self.custom_id.freight_id.id})
mail_content = _('Hi %s,<br>'
'The Custom Clearance Revision with reason: %s'
'<div style = "text-align: center; '
'margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; font-size: 12px; '
'line-height: 18px; color: #FFFFFF; '
'border-color:#875A7B;text-decoration: none; '
'display: inline-block; '
'margin-bottom: 0px; font-weight: 400;'
'text-align: center; vertical-align: middle; '
'cursor: pointer; white-space: nowrap; '
'background-image: none; '
'background-color: #875A7B; '
'border: 1px solid #875A7B; border-radius:3px;">'
'View %s</a></div>'
'<div style = "text-align: center; '
'margin-top: 16px;"><a href = "%s"'
'style = "padding: 5px 10px; '
'font-size: 12px; line-height: 18px; '
'color: #FFFFFF; border-color:#875A7B;'
'text-decoration: none; display: inline-block; '
'margin-bottom: 0px; font-weight: 400;'
'text-align: center; vertical-align: middle; '
'cursor: pointer; white-space: nowrap; '
'background-image: none; '
'background-color: #875A7B; '
'border: 1px solid #875A7B; border-radius:3px;">'
'View %s</a></div>'
) % (rec.agent_id.name, self.name, Urls,
rec.name, Urls_,
self.custom_id.freight_id.name)
main_content = {
'subject': _('Custom Clerance Revision For %s') % self.custom_id.freight_id.name,
'author_id': self.env.user.partner_id.id,
'body_html': mail_content,
'email_to': rec.agent_id.email,
}
mail_id = self.env['mail.mail'].create(main_content)
mail_id.mail_message_id.body = mail_content
mail_id.send()
self.env['custom.clearance.revision'].create({
'clearance_id': self.custom_id.id,
'reason': self.name,
'name': 'RE: ' + self.custom_id.name
})

37
freight_management_system/wizard/custom_revision.xml

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="custom_clearance_revision_form_view" model="ir.ui.view">
<field name="name">Custom Clearance Revision</field>
<field name="model">custom.clearance.revision.wizard</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="custom_id" invisible="1"/>
</group>
</sheet>
<footer>
<button string="Save" name="create_revision" type="object" class="btn-primary" data-hotkey="q"/>
<button string="Cancel" class="btn-secondary" special="cancel" data-hotkey="z"/>
</footer>
</form>
</field>
</record>
<record id="action_custom_clearance_revision_wizard" model="ir.actions.act_window">
<field name="name">Custom Clearance Revision</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">custom.clearance.revision.wizard</field>
<field name="view_mode">form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Define a new custom clearance revision
</p>
</field>
</record>
</data>
</odoo>
Loading…
Cancel
Save