You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
7.9 KiB
186 lines
7.9 KiB
"""Delivery persons jobs"""
|
|
# -*- coding: utf-8 -*-
|
|
#############################################################################
|
|
#
|
|
# Cybrosys Technologies Pvt. Ltd.
|
|
#
|
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
|
# Author: Gayathri v (odoo@cybrosys.com)
|
|
#
|
|
# You can modify it under the terms of the GNU LESSER
|
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
|
#
|
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
|
# (LGPL v3) along with this program.
|
|
# If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
#############################################################################
|
|
from odoo import http
|
|
from odoo.http import request
|
|
|
|
|
|
class WebsitePage(http.Controller):
|
|
"""Redirecting to the corresponding pages"""
|
|
|
|
@http.route('/my_jobs', type='http', auth='public', website=True)
|
|
def my_jobs(self, **kw):
|
|
"""Delivery persons jobs"""
|
|
if kw.get('order_id'):
|
|
order = request.env['stock.picking'].sudo().search(
|
|
[('sale_id', '=', int(kw.get('order_id')))])
|
|
order.write({
|
|
'is_complete': True
|
|
})
|
|
assigned_delivery_orders = request.env[
|
|
'stock.picking'].sudo().search(
|
|
[('delivery_boy_id', '!=', False),
|
|
('delivery_boy_id.user_id', '=', request.env.user.id),
|
|
('is_complete', '=', False),
|
|
('delivery_state', '!=', 'accept')])
|
|
else:
|
|
assigned_delivery_orders = request.env[
|
|
'stock.picking'].sudo().search(
|
|
[('delivery_boy_id', '!=', False),
|
|
('delivery_boy_id.user_id', '=', request.env.user.id),
|
|
('is_complete', '=', False)])
|
|
values = []
|
|
deliver_boy_jobs = {}
|
|
if not len(assigned_delivery_orders) == 0:
|
|
for rec in assigned_delivery_orders:
|
|
values.append({
|
|
'id': rec.id,
|
|
'order': rec.origin,
|
|
'customer': rec.partner_id.name,
|
|
'address': rec.partner_id.street,
|
|
'distance': rec.distance,
|
|
'price': request.env['sale.order'].sudo().search(
|
|
[('name', '=', rec.origin)]).amount_total,
|
|
})
|
|
deliver_boy_jobs['delivery'] = values
|
|
return request.render('home_delivery_system.website_my_jobs',
|
|
deliver_boy_jobs)
|
|
else:
|
|
return request.render('home_delivery_system.website_my_jobs',
|
|
deliver_boy_jobs)
|
|
|
|
@http.route('/broadcasted_order', type='http', auth='public', website=True)
|
|
def broadcasted_order(self):
|
|
"""To view broadcast orders in the website"""
|
|
broadcast_order = request.env['stock.picking'].sudo().search(
|
|
[('is_broadcast_order', '=', True)])
|
|
values = []
|
|
broadcasts_order = {}
|
|
if not len(broadcast_order) == 0:
|
|
for rec in broadcast_order:
|
|
values.append({
|
|
'id': rec.id,
|
|
'order': rec.origin,
|
|
'customer': rec.partner_id.name,
|
|
'address': rec.partner_id.street,
|
|
'distance': rec.distance,
|
|
'price': request.env['sale.order'].sudo().search(
|
|
[('name', '=', rec.origin)]).amount_total,
|
|
})
|
|
broadcasts_order['broadcast'] = values
|
|
return http.request.render(
|
|
'home_delivery_system.website_broadcast_order', broadcasts_order)
|
|
|
|
@http.route('/completed_order', type='http', auth='public', website=True)
|
|
def completed_order(self):
|
|
"""Delivery persons completed orders"""
|
|
completed_order = request.env['stock.picking'].sudo().search(
|
|
[('is_complete', '!=', False)])
|
|
values = []
|
|
completed_orders = {}
|
|
if not len(completed_order) == 0:
|
|
for rec in completed_order:
|
|
values.append({
|
|
'id': rec.id,
|
|
'order': rec.origin,
|
|
'customer': rec.partner_id.name,
|
|
'address': rec.partner_id.street,
|
|
'distance': rec.distance,
|
|
'price': request.env['sale.order'].sudo().search(
|
|
[('name', '=', rec.origin)]).amount_total,
|
|
'status': 'Paid'
|
|
})
|
|
completed_orders['completed'] = values
|
|
return http.request.render(
|
|
'home_delivery_system.website_completed_order', completed_orders)
|
|
|
|
@http.route('/delivery/option/<int:orderid>', methods=['POST', 'GET'],
|
|
type='http', auth='public', website=True)
|
|
def delivery(self, orderid):
|
|
"""The delivery person deliver the orders"""
|
|
delivery_order = request.env['stock.picking'].sudo().search(
|
|
[('id', '=', orderid)])
|
|
values = []
|
|
product = []
|
|
delivery_order_details = {}
|
|
values.append({
|
|
'id': delivery_order.sale_id.id,
|
|
'order': delivery_order.sale_id.name,
|
|
'customer': delivery_order.sale_id.partner_id.name,
|
|
'address': delivery_order.sale_id.partner_id.street,
|
|
'street': delivery_order.sale_id.partner_id.street2 or '',
|
|
'city': delivery_order.sale_id.partner_id.city or '',
|
|
'zip': delivery_order.sale_id.partner_id.zip or '',
|
|
'country': delivery_order.sale_id.partner_id.country_id.name or '',
|
|
'phone': delivery_order.sale_id.partner_id.phone,
|
|
'price': delivery_order.sale_id.amount_total,
|
|
'payment': delivery_order.payment_status,
|
|
})
|
|
for rec in delivery_order.sale_id.order_line:
|
|
product.append({
|
|
'product': rec.product_id.name,
|
|
'qty': rec.product_uom_qty,
|
|
'total': delivery_order.sale_id.amount_total
|
|
})
|
|
delivery_order_details['delivery_order'] = values
|
|
delivery_order_details['product'] = product
|
|
return http.request.render(
|
|
'home_delivery_system.website_delivery_option',
|
|
delivery_order_details)
|
|
|
|
@http.route('/delivery/issue', methods=['POST', 'GET'], type='http',
|
|
auth='public', website=True)
|
|
def issue(self, **POST):
|
|
"""It returns the delivery person can post an issue,while any
|
|
issue arrived at the time of delivery"""
|
|
order = request.env['sale.order'].browse(int(POST.get('id')))
|
|
order.write({
|
|
'note': POST.get('message')
|
|
})
|
|
values = []
|
|
product = []
|
|
delivery_order_details = {}
|
|
values.append({
|
|
'id': order.id,
|
|
'order': order.name,
|
|
'customer': order.partner_id.name,
|
|
'address': order.partner_id.street,
|
|
'street': order.partner_id.street2 or '',
|
|
'city': order.partner_id.city or '',
|
|
'zip': order.partner_id.zip or '',
|
|
'country': order.partner_id.country_id.name or '',
|
|
'phone': order.partner_id.phone,
|
|
'price': order.amount_total,
|
|
'payment': request.env['stock.picking'].sudo().search(
|
|
[('sale_id', '=', order.id)]).payment_status,
|
|
})
|
|
for rec in order.order_line:
|
|
product.append({
|
|
'product': rec.product_id.name,
|
|
'qty': rec.product_uom_qty,
|
|
'total': order.amount_total
|
|
})
|
|
delivery_order_details['delivery_order'] = values
|
|
delivery_order_details['product'] = product
|
|
return http.request.render(
|
|
'home_delivery_system.website_delivery_option',
|
|
delivery_order_details)
|
|
|