| @ -0,0 +1,28 @@ | |||||
|  | Stock Transport Management v10 | ||||
|  | ============================== | ||||
|  | 
 | ||||
|  | This module was developed to  manage the stock .It helps to track transportation details of every transfer. | ||||
|  | 
 | ||||
|  | Installation | ||||
|  | ============ | ||||
|  | You need **report_xlsx**  to install this module. | ||||
|  | 
 | ||||
|  | Configuration | ||||
|  | ============= | ||||
|  | 
 | ||||
|  | Nothing to configure. | ||||
|  | 
 | ||||
|  | Usage | ||||
|  | ===== | ||||
|  | 
 | ||||
|  | To use this functionality, you need to: | ||||
|  | #.First create vehicles(Sales > Configuration > Vehicles) | ||||
|  | #Now ,you can create sale order ( Sales > Sale Order) | ||||
|  | #.All Transportation details can be viewed in Sales > Transportation Details. | ||||
|  | #. You can also print reports of every transportation.(Sales > Reports > Transportation Reports) | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | Credits | ||||
|  | ======= | ||||
|  | Developer: Saritha @ cybrosys | ||||
|  | 
 | ||||
| @ -0,0 +1,26 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | from . import models | ||||
|  | import wizards,report | ||||
| @ -0,0 +1,25 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | { | ||||
|  |     'name': "Stock Transport Management", | ||||
|  |     'version': '10.0.1.0.0', | ||||
|  |     'summary': """Manage Stock Transport Management With Ease""", | ||||
|  |     'description': """This Module Manage Transport Management Of Stocks""", | ||||
|  |     'author': "Cybrosys Techno Solutions", | ||||
|  |     'company': 'Cybrosys Techno Solutions', | ||||
|  |     'website': "https://www.cybrosys.com", | ||||
|  |     'category': 'Tools', | ||||
|  |     'depends': ['base', 'sale', 'stock', 'report'], | ||||
|  |     'data': [ | ||||
|  |         'views/transport_vehicle_view.xml', | ||||
|  |         'views/transport_vehicle_status_view.xml', | ||||
|  |         'views/transportation_sale_order_view.xml', | ||||
|  |         'views/transport_warehouse_view.xml', | ||||
|  |         'views/transport_wizard_view.xml', | ||||
|  |         'views/transport_report.xml', | ||||
|  |     ], | ||||
|  |     'images': ['static/description/banner.jpg'], | ||||
|  |     'license': 'LGPL-3', | ||||
|  |     'installable': True, | ||||
|  |     'auto_install': False, | ||||
|  |     'application': False, | ||||
|  | } | ||||
| @ -0,0 +1,27 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | from . import transport_vehicle | ||||
|  | import transport_vehicle_status | ||||
|  | import transport_sale_order | ||||
|  | import transport_warehouse | ||||
| @ -0,0 +1,32 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | from odoo import models, fields | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class VehicleSaleOrder(models.Model): | ||||
|  |     _inherit = 'sale.order' | ||||
|  | 
 | ||||
|  |     transportation_name = fields.Many2one('sale.vehicle', string="Transportation Via", | ||||
|  |                                           domain=[('active_available', '=', True)]) | ||||
|  | 
 | ||||
| @ -0,0 +1,47 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | from odoo import models, fields, api | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class VehicleCreation(models.Model): | ||||
|  |     _name = 'sale.vehicle' | ||||
|  | 
 | ||||
|  |     name = fields.Char(string="Vehicle Name", required=True) | ||||
|  |     driver_name = fields.Many2one('res.partner', string="Contact Name", required=True) | ||||
|  |     vehicle_image = fields.Binary(string='Image', store=True, attachment=True) | ||||
|  |     licence_plate = fields.Char(string="Licence Plate", required=True) | ||||
|  |     mob_no = fields.Char(string="Mobile Number", required=True) | ||||
|  |     vehicle_address = fields.Char(string="Address") | ||||
|  |     vehicle_city = fields.Char(string='City') | ||||
|  |     vehicle_zip = fields.Char(string='ZIP') | ||||
|  |     state_id = fields.Many2one('res.country.state', string='State') | ||||
|  |     country_id = fields.Many2one('res.country', string='Country') | ||||
|  |     active_available = fields.Boolean(string="Active", default=True) | ||||
|  | 
 | ||||
|  |     @api.one | ||||
|  |     def complete_name_compute(self): | ||||
|  |         self.name = self.ref_name | ||||
|  |         if self.licence_plate: | ||||
|  |             self.name = str(self.licence_plate) + ' / ' + str(self.ref_name) | ||||
|  | 
 | ||||
| @ -0,0 +1,71 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | from odoo import models, fields | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class VehicleStatus(models.Model): | ||||
|  |     _name = 'vehicle.status' | ||||
|  | 
 | ||||
|  |     name = fields.Char(string="Vehicle Name", required=True) | ||||
|  |     transport_date = fields.Date(string="Transportation Date") | ||||
|  |     no_parcels = fields.Char(string="No Of Parcels") | ||||
|  |     sale_order = fields.Char(string='Order Reference') | ||||
|  |     delivery_order = fields.Char(string="Delivery Order") | ||||
|  |     state = fields.Selection([ | ||||
|  |         ('draft', 'Draft'), | ||||
|  |         ('start', 'Start'), | ||||
|  |         ('waiting', 'Waiting'), | ||||
|  |         ('cancel', 'Cancel'), | ||||
|  |         ('done', 'Done'), | ||||
|  |     ], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') | ||||
|  | 
 | ||||
|  |     def start_action(self): | ||||
|  |         vehicle = self.env['sale.vehicle'].search([('name', '=', self.name)]) | ||||
|  |         vals = {'active_available': False} | ||||
|  |         vehicle.write(vals) | ||||
|  |         self.write({'state': 'start'}) | ||||
|  | 
 | ||||
|  |     def action_cancel(self): | ||||
|  |         self.write({'state': 'cancel'}) | ||||
|  |         vehicle = self.env['sale.vehicle'].search([('name', '=', self.name)]) | ||||
|  |         vals = {'active_available': True} | ||||
|  |         vehicle.write(vals) | ||||
|  | 
 | ||||
|  |     def action_done(self): | ||||
|  |         self.write({'state': 'done'}) | ||||
|  |         vehicle = self.env['sale.vehicle'].search([('name', '=', self.name)]) | ||||
|  |         vals = {'active_available': True} | ||||
|  |         vehicle.write(vals) | ||||
|  | 
 | ||||
|  |     def action_waiting(self): | ||||
|  |         vehicle = self.env['sale.vehicle'].search([('name', '=', self.name)]) | ||||
|  |         vals = {'active_available': False} | ||||
|  |         vehicle.write(vals) | ||||
|  |         self.write({'state': 'waiting'}) | ||||
|  | 
 | ||||
|  |     def action_reshedule(self): | ||||
|  |         self.write({'state': 'draft'}) | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | 
 | ||||
| @ -0,0 +1,61 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | from odoo import models, fields, api | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class VehicleSaleOrder(models.Model): | ||||
|  |     _inherit = 'stock.picking' | ||||
|  | 
 | ||||
|  |     transportation_name = fields.Char(string="Transportation Via", compute="get_transportation") | ||||
|  |     no_parcels = fields.Integer(string="No Of Parcels") | ||||
|  |     transportation_details = fields.One2many('vehicle.status', compute='fetch_details', string="Transportation Details") | ||||
|  | 
 | ||||
|  |     @api.multi | ||||
|  |     def get_transportation(self): | ||||
|  |         res = self.env['sale.order'].search([('name', '=', self.sale_id.name)]) | ||||
|  |         self.transportation_name = res.transportation_name.name | ||||
|  |         order = self.env['vehicle.status'].search([('sale_order', '=', self.sale_id.name)]) | ||||
|  |         if not order and self.transportation_name: | ||||
|  |             vals = {'name': self.transportation_name, | ||||
|  |                     'no_parcels':self.no_parcels, | ||||
|  |                     'sale_order': self.sale_id.name, | ||||
|  |                     'delivery_order': self.name, | ||||
|  |                     'transport_date': self.min_date, | ||||
|  |                     } | ||||
|  |             obj = self.env['vehicle.status'].create(vals) | ||||
|  |             return obj | ||||
|  | 
 | ||||
|  |     @api.onchange('no_parcels') | ||||
|  |     def get_parcel(self): | ||||
|  |         order = self.env['vehicle.status'].search([('sale_order', '=', self.sale_id.name)]) | ||||
|  |         vals = {'no_parcels': self.no_parcels} | ||||
|  |         order.write(vals) | ||||
|  | 
 | ||||
|  |     @api.multi | ||||
|  |     def fetch_details(self): | ||||
|  |         order = self.env['vehicle.status'].search([('sale_order', '=', self.sale_id.name)]) | ||||
|  |         self.transportation_details = order | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | 
 | ||||
| @ -0,0 +1,25 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | from . import transport_xlsx | ||||
|  | 
 | ||||
| @ -0,0 +1,85 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | from odoo.addons.report_xlsx.report.report_xlsx import ReportXlsx | ||||
|  | import datetime | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class TransportReportXls(ReportXlsx): | ||||
|  | 
 | ||||
|  |     def generate_xlsx_report(self, workbook, data, obj): | ||||
|  |         logged_users = self.env['res.company']._company_default_get('sale.order') | ||||
|  |         sheet = workbook.add_worksheet() | ||||
|  |         format1 = workbook.add_format({'font_size': 16, 'align': 'vcenter', 'bg_color': '#D3D3D3', 'bold': True}) | ||||
|  |         format1.set_font_color('#000080') | ||||
|  |         format2 = workbook.add_format({'font_size': 12, 'bold': True, 'bg_color': '#D3D3D3'}) | ||||
|  |         format3 = workbook.add_format({'font_size': 10, 'bold': True}) | ||||
|  |         format4 = workbook.add_format({'font_size': 10}) | ||||
|  |         format1.set_align('center') | ||||
|  |         format2.set_align('center') | ||||
|  |         format3.set_align('center') | ||||
|  |         sheet.merge_range('A3:L3', "Transportation Report", format1) | ||||
|  |         report_date = datetime.datetime.now().strftime("%m/%d/%Y") | ||||
|  |         sheet.merge_range('K1:L1', report_date, format4) | ||||
|  |         sheet.merge_range('A1:B1', logged_users.name, format4) | ||||
|  |         if data['form']['start_date']: | ||||
|  |             date_start = data['form']['start_date'] | ||||
|  |         else: | ||||
|  |             date_start = "" | ||||
|  |         if data['form']['end_date']: | ||||
|  |             date_end = data['form']['end_date'] | ||||
|  |         else: | ||||
|  |             date_end = "" | ||||
|  |         if date_start: | ||||
|  |             sheet.write('A5', "Date From :", format3) | ||||
|  |             sheet.write('A6', date_start, format4) | ||||
|  |         if date_end: | ||||
|  |             sheet.write('C5', "Date To :", format3) | ||||
|  |             sheet.write('C6', date_end, format4) | ||||
|  |         sheet.write('A8', "Vehicle Name ", format2) | ||||
|  |         sheet.write('B8', "", format2) | ||||
|  |         sheet.write('C8', "Date", format2) | ||||
|  |         sheet.write('D8', "", format2) | ||||
|  |         sheet.write('E8', "Sale Order", format2) | ||||
|  |         sheet.write('F8', "", format2) | ||||
|  |         sheet.write('G8', "Delivery Order", format2) | ||||
|  |         sheet.write('H8', "", format2) | ||||
|  |         sheet.write('I8', "No of Parcels", format2) | ||||
|  |         sheet.write('J8', "", format2) | ||||
|  |         sheet.write('K8', "Status", format2) | ||||
|  |         if date_start and date_end: | ||||
|  |             report_obj = self.env['vehicle.status'].search([('transport_date', ">=", date_start) and | ||||
|  |                                                             ('transport_date', "<=", date_end)]) | ||||
|  |         else: | ||||
|  |             report_obj = self.env['vehicle.status'].search([]) | ||||
|  |         row_number = 9 | ||||
|  |         col_number = 0 | ||||
|  |         for values in report_obj: | ||||
|  |             sheet.write(row_number, col_number, values['name'], format3) | ||||
|  |             sheet.write(row_number, col_number + 2, values['transport_date'], format3) | ||||
|  |             sheet.write(row_number, col_number + 4, values['sale_order'], format3) | ||||
|  |             sheet.write(row_number, col_number + 6, values['delivery_order'], format3) | ||||
|  |             sheet.write(row_number, col_number + 8, values['no_parcels'], format3) | ||||
|  |             sheet.write(row_number, col_number + 10, values['state'], format3) | ||||
|  |             row_number += 1 | ||||
|  | 
 | ||||
|  | TransportReportXls('report.stock_transport_management.transport_report_xls.xlsx', 'vehicle.status') | ||||
| After Width: | Height: | Size: 119 KiB | 
| After Width: | Height: | Size: 50 KiB | 
| After Width: | Height: | Size: 14 KiB | 
| @ -0,0 +1,112 @@ | |||||
|  | <section class="oe_container"> | ||||
|  |     <div class="oe_row oe_spaced"> | ||||
|  |         <h2 class="oe_slogan">Stock Transport Management (STM)</h2> | ||||
|  |         <h3 class="oe_slogan">Manage Stock Transport With Ease</h3> | ||||
|  |         <h4 class="oe_slogan">Cybrosys Technologies , www.cybrosys.com</h4> | ||||
|  |         <div> | ||||
|  |             <h4><p>Major Features:</p></h4> | ||||
|  |             <ul> | ||||
|  |                <li style="list-style:none !important;"><span style="color:green;"> ☑</span>  Manage transport details of picking the stock.</li> | ||||
|  |                 <li style="list-style:none !important;"><span style="color:green;"> ☑</span>  Assigns transportation details to sale order.</li> | ||||
|  |                 <li style="list-style:none !important;"><span style="color:green;"> ☑</span>  Option to reshedule transportation entries.</li> | ||||
|  |                 <li style="list-style:none !important;"><span style="color:green;"> ☑</span>  Transport entry reports.</li> | ||||
|  |             </ul> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </section> | ||||
|  | 
 | ||||
|  | <section class="oe_container oe_dark"> | ||||
|  |     <div class="oe_row oe_spaced"> | ||||
|  |         <div class="oe_picture"> | ||||
|  |             <h3 class="oe_slogan">Overview</h3> | ||||
|  |             <p class="oe_mt32"> | ||||
|  |             Stock Transport Management, aims to manage transport details of picking the stocks. | ||||
|  |             </p> | ||||
|  |             <p> | ||||
|  |                 *While creating new quotation you can assign transport via , this order and will be | ||||
|  |                 transferred via this Vehicle. | ||||
|  |             <p> | ||||
|  |                 *  You can view all transport entry under Sales > Transportation Details menu. | ||||
|  |             </p> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </section> | ||||
|  | 
 | ||||
|  | <section class="oe_container"> | ||||
|  |     <div class="oe_row oe_spaced"> | ||||
|  |         <div class="oe_span12"> | ||||
|  |             <div class="oe_demo oe_picture oe_screenshot"> | ||||
|  |             	<img src="vehicle.png"> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </section> | ||||
|  | 
 | ||||
|  | <section class="oe_container oe_dark"> | ||||
|  |     <div class="oe_row oe_space"> | ||||
|  |     <h3 class="oe_slogan">Assign Transport Details To Sale Order</h3> | ||||
|  |         <div class="oe_span6"> | ||||
|  |             <p class='oe_mt32'> | ||||
|  |                 <centre>We can assign transportation details to sale order</centre> | ||||
|  |             </p> | ||||
|  |         </div> | ||||
|  |         <div class="oe_span6"> | ||||
|  |             <div class="oe_demo oe_picture oe_screenshot"> | ||||
|  |                 <img src="sale_order.png"> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </section> | ||||
|  | 
 | ||||
|  | <section class="oe_container"> | ||||
|  |     <div class="oe_row oe_spaced"> | ||||
|  |         <h3 class="oe_slogan"> Transportation Details</h3> | ||||
|  |         <div class="oe_span6"> | ||||
|  |             <div class="oe_demo oe_picture oe_screenshot"> | ||||
|  |             	<img src="transport_details.png"> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |         <div class="oe_span6"> | ||||
|  |             <p class='oe_mt32'> | ||||
|  |                 View all transport entries and click on the start button to start the journey. We also have | ||||
|  |                 option to reschedule transportation.. | ||||
|  |             </p> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </section> | ||||
|  | 
 | ||||
|  | <section class="oe_container dark"> | ||||
|  |     <div class="oe_row oe_space"> | ||||
|  |         <h3 class="oe_slogan"> Report</h3> | ||||
|  |         <div class="oe_span6"> | ||||
|  |         <p class='oe_mt32'> | ||||
|  |         Have option to print report of all transportation entries | ||||
|  |         </p> | ||||
|  |         </div> | ||||
|  |         <div class="oe_span6"> | ||||
|  |             <div class="oe_demo oe_picture oe_screenshot"> | ||||
|  |                 <img src="report.png"> | ||||
|  |             </div> | ||||
|  |         </div> | ||||
|  |     </div> | ||||
|  | </section> | ||||
|  | 
 | ||||
|  | <section class="oe_container"> | ||||
|  |     <h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2> | ||||
|  |     <div class="oe_slogan" style="margin-top:10px !important;"> | ||||
|  |         <a  class="btn btn-primary btn-lg mt8" | ||||
|  |             style="color: #FFFFFF !important;" href="http://www.cybrosys.com"><i | ||||
|  |             class="fa fa-envelope"></i> Email </a> <a | ||||
|  |             class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;" | ||||
|  |             href="http://www.cybrosys.com/contact/"><i | ||||
|  |             class="fa fa-phone"></i> Contact Us </a> <a | ||||
|  |             class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;" | ||||
|  |             href="http://www.cybrosys.com/odoo-customization-and-installation/"><i | ||||
|  |             class="fa fa-check-square"></i> Request Customization </a> | ||||
|  |     </div> | ||||
|  |             <img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block"> | ||||
|  | </section> | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | 
 | ||||
| After Width: | Height: | Size: 58 KiB | 
| After Width: | Height: | Size: 98 KiB | 
| After Width: | Height: | Size: 74 KiB | 
| After Width: | Height: | Size: 67 KiB | 
| @ -0,0 +1,14 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  |     <data> | ||||
|  |         <report | ||||
|  |             id="transport_xlsx" | ||||
|  |             model="vehicle.status" | ||||
|  |             string=" " | ||||
|  |             report_type="xlsx" | ||||
|  |             name="stock_transport_management.transport_report_xls.xlsx" | ||||
|  |             file="stock_transport_management.transport_report_xls.xlsx" | ||||
|  |             attachment_use="False" | ||||
|  |         /> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,65 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  |     <data> | ||||
|  |         <record model="ir.ui.view" id="transport_management_vehicle_status_form_view"> | ||||
|  |         <field name="name">Vehicles</field> | ||||
|  |         <field name="model">vehicle.status</field> | ||||
|  |         <field name="arch" type="xml"> | ||||
|  |             <form string="Vehicle"> | ||||
|  |                 <header> | ||||
|  |                     <button name="action_reshedule" states="cancel" string="Reshedule" type="object" class="btn-primary"/> | ||||
|  |                     <button name="start_action" states="draft" string="Start" type="object" class="btn-primary"/> | ||||
|  |                     <button name="action_cancel" states="draft" type="object" string="Cancel"/> | ||||
|  |                     <button name="action_waiting" states="start" type="object" string="Waiting"/> | ||||
|  |                     <button name="action_done" states="draft,start,waiting" type="object" string="Done"/> | ||||
|  |                     <field name="state" widget="statusbar" statusbar_visible="draft,start,waiting,cancel,done" readonly="1"/> | ||||
|  |                 </header> | ||||
|  |                 <sheet> | ||||
|  |                     <group> | ||||
|  |                         <group> | ||||
|  |                             <field name="name"/> | ||||
|  |                             <field name="delivery_order"/> | ||||
|  |                             <field name="sale_order"/> | ||||
|  |                         </group> | ||||
|  |                         <group> | ||||
|  |                             <field name="transport_date"/> | ||||
|  |                             <field name="no_parcels"/> | ||||
|  |                         </group> | ||||
|  |                     </group> | ||||
|  |                 </sheet> | ||||
|  |             </form> | ||||
|  |         </field> | ||||
|  |         </record> | ||||
|  | 
 | ||||
|  |         <record id="vehicle_status_tree_view" model="ir.ui.view"> | ||||
|  |             <field name="name">Vehicle</field> | ||||
|  |             <field name="model">vehicle.status</field> | ||||
|  |             <field name="arch" type="xml"> | ||||
|  |                 <tree> | ||||
|  |                     <field name="name"/> | ||||
|  |                     <field name="delivery_order"/> | ||||
|  |                     <field name="sale_order"/> | ||||
|  |                     <field name="transport_date"/> | ||||
|  |                     <field name="no_parcels"/> | ||||
|  |                 </tree> | ||||
|  |             </field> | ||||
|  |         </record> | ||||
|  | 
 | ||||
|  |         <record id="vehicle_status_action" model="ir.actions.act_window"> | ||||
|  |             <field name="name">Vehicle</field> | ||||
|  |             <field name="type">ir.actions.act_window</field> | ||||
|  |             <field name="res_model">vehicle.status</field> | ||||
|  |             <field name="view_mode">tree,form</field> | ||||
|  |             <field name="view_type">form</field> | ||||
|  |             <field name="view_id" ref="vehicle_status_tree_view"/> | ||||
|  |             <field name="help" type="html"> | ||||
|  |                 <p class="oe_view_nocontent_create"> | ||||
|  |                     Click to define a new Vehicle. | ||||
|  |                 </p> | ||||
|  |             </field> | ||||
|  |         </record> | ||||
|  | 
 | ||||
|  |         <menuitem id="main_transportation_vehicle_status_menu" name="Transportation Details"  parent="sales_team.menu_sales" action="vehicle_status_action" sequence="25"/> | ||||
|  | 
 | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,85 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  |     <data> | ||||
|  |         <record model="ir.ui.view" id="transport_management_vehicle_creation_form_view"> | ||||
|  |         <field name="name">Vehicles</field> | ||||
|  |         <field name="model">sale.vehicle</field> | ||||
|  |         <field name="arch" type="xml"> | ||||
|  |             <form string="Vehicle"> | ||||
|  |                 <sheet> | ||||
|  |                     <field name="vehicle_image" widget="image" class="oe_avatar"/> | ||||
|  |                     <div class="oe_title"> | ||||
|  |                         <label for="name"/> | ||||
|  |                         <h1> | ||||
|  |                             <field name="name" placeholder=" Vehicle Name" style="width:50%%"/> | ||||
|  |                         </h1> | ||||
|  |                         <label for="licence_plate"/> | ||||
|  |                         <h2> | ||||
|  |                             <field name="licence_plate" style="width:25%%"/> | ||||
|  |                         </h2> | ||||
|  |                     </div> | ||||
|  |                     <group> | ||||
|  |                         <group> | ||||
|  |                             <field name="driver_name"/> | ||||
|  |                             <field name="vehicle_address"/> | ||||
|  |                             <field name="vehicle_city"/> | ||||
|  |                             <field name="country_id"/> | ||||
|  |                         </group> | ||||
|  |                         <group> | ||||
|  |                             <field name="mob_no"/> | ||||
|  |                             <field name="vehicle_zip"/> | ||||
|  |                             <field name="state_id"/> | ||||
|  |                             <field name="active_available" readonly="1"/> | ||||
|  |                         </group> | ||||
|  |                     </group> | ||||
|  |                 </sheet> | ||||
|  |             </form> | ||||
|  |         </field> | ||||
|  |         </record> | ||||
|  | 
 | ||||
|  |         <record id="vehicle_template_kanban_view" model="ir.ui.view"> | ||||
|  |             <field name="name">sale.vehicle.kanban</field> | ||||
|  |             <field name="model">sale.vehicle</field> | ||||
|  |             <field name="arch" type="xml"> | ||||
|  |             <kanban> | ||||
|  |                 <field name="vehicle_image" modifiers="{}"/> | ||||
|  |                 <templates> | ||||
|  |                     <t t-name="kanban-box"> | ||||
|  |                         <div class="oe_kanban_global_click"> | ||||
|  |                             <div class="o_kanban_image"> | ||||
|  |                                 <img t-att-src="kanban_image('sale.vehicle', 'vehicle_image', record.id.value)"/> | ||||
|  |                             </div> | ||||
|  |                             <div class="oe_kanban_details"> | ||||
|  |                             <strong> | ||||
|  |                                 <span t-if="record.name.value">[<field name="name"/>]</span> | ||||
|  |                                 <ul> | ||||
|  |                                     <li>Name :<field name="driver_name"/></li> | ||||
|  |                                     <li>Phone Number : <field name="mob_no"/> </li> | ||||
|  |                                 </ul> | ||||
|  |                             </strong> | ||||
|  |                             </div> | ||||
|  |                         </div> | ||||
|  |                     </t> | ||||
|  |                 </templates> | ||||
|  |             </kanban> | ||||
|  |             </field> | ||||
|  |         </record> | ||||
|  | 
 | ||||
|  |         <record id="vehicle_template_action" model="ir.actions.act_window"> | ||||
|  |             <field name="name">Vehicle</field> | ||||
|  |             <field name="type">ir.actions.act_window</field> | ||||
|  |             <field name="res_model">sale.vehicle</field> | ||||
|  |             <field name="view_mode">kanban,tree,form</field> | ||||
|  |             <field name="view_type">form</field> | ||||
|  |             <field name="view_id" ref="vehicle_template_kanban_view"/> | ||||
|  |             <field name="help" type="html"> | ||||
|  |                 <p class="oe_view_nocontent_create"> | ||||
|  |                     Click to define a new Vehicle. | ||||
|  |                 </p> | ||||
|  |             </field> | ||||
|  |         </record> | ||||
|  | 
 | ||||
|  |         <menuitem id="main_transportation_vehicle_creation_menu" name="Vehicles"  parent="sales_team.menu_sale_config" action="vehicle_template_action" sequence="2"/> | ||||
|  | 
 | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,22 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  |     <data> | ||||
|  |          <record id="transportation_warehouse_form_view" model="ir.ui.view"> | ||||
|  |             <field name="name"> Warehouse</field> | ||||
|  |             <field name="model">stock.picking</field> | ||||
|  |             <field name="inherit_id" ref="stock.view_picking_form"/> | ||||
|  |              <field name="arch" type="xml"> | ||||
|  |                 <xpath expr="//field[@name='partner_id']" position="after"> | ||||
|  |                     <field name="transportation_name"/> | ||||
|  |                     <field name="no_parcels"/> | ||||
|  |                 </xpath> | ||||
|  |                  <notebook position="inside"> | ||||
|  |                      <page string="Transportation Details"> | ||||
|  |                          <field name="transportation_details"/> | ||||
|  |                      </page> | ||||
|  |                  </notebook> | ||||
|  |              </field> | ||||
|  |         </record> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
|  | 
 | ||||
| @ -0,0 +1,36 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||
|  | <odoo> | ||||
|  |     <data> | ||||
|  |         <record id="transport_report_wizard_view_form" model="ir.ui.view"> | ||||
|  |             <field name="name">Transport Report</field> | ||||
|  |             <field name="model">transport.report.wizard</field> | ||||
|  |             <field name="arch" type="xml"> | ||||
|  |                 <form> | ||||
|  |                     <group> | ||||
|  |                         <group> | ||||
|  |                             <field name="start_date"/> | ||||
|  |                         </group> | ||||
|  |                         <group> | ||||
|  |                             <field name="end_date"/> | ||||
|  |                         </group> | ||||
|  |                     </group> | ||||
|  |                     <footer> | ||||
|  |                         <button name="print_report" type="object" string="Print XLS" class="oe_highlight"/> | ||||
|  |                         or | ||||
|  |                         <button special="cancel" string="Cancel"/> | ||||
|  |                     </footer> | ||||
|  |                 </form> | ||||
|  |             </field> | ||||
|  |         </record> | ||||
|  |         <act_window | ||||
|  |             id="transport_report_open_wizard" | ||||
|  |             name="Transport Report" | ||||
|  |             res_model="transport.report.wizard" | ||||
|  |             view_mode="form" | ||||
|  |             view_id="transport_report_wizard_view_form" | ||||
|  |             target="new"/> | ||||
|  | 
 | ||||
|  |         <menuitem id="main_transportation_wizard_menu" name="Transportation Reports"  parent="sales_team.menu_sale_report" action="transport_report_open_wizard" sequence="22"/> | ||||
|  | 
 | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,15 @@ | |||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||
|  | <odoo> | ||||
|  |     <data> | ||||
|  |         <record id="transportation_sale_order_form_view" model="ir.ui.view"> | ||||
|  |             <field name="name"> Sale Order</field> | ||||
|  |             <field name="model">sale.order</field> | ||||
|  |             <field name="inherit_id" ref="sale.view_order_form"/> | ||||
|  |              <field name="arch" type="xml"> | ||||
|  |                 <xpath expr="//field[@name='confirmation_date']" position="after"> | ||||
|  |                     <field name="transportation_name"/> | ||||
|  |                 </xpath> | ||||
|  |              </field> | ||||
|  |         </record> | ||||
|  |     </data> | ||||
|  | </odoo> | ||||
| @ -0,0 +1,24 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | import transport_wizard | ||||
| @ -0,0 +1,47 @@ | |||||
|  | # -*- coding: utf-8 -*- | ||||
|  | ############################################################################## | ||||
|  | # | ||||
|  | #    Cybrosys Technologies Pvt. Ltd. | ||||
|  | #    Copyright (C) 2017-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | ||||
|  | #    Author: Saritha Sahadevan(<https://www.cybrosys.com>) | ||||
|  | #    you can modify it under the terms of the GNU LESSER | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | ||||
|  | # | ||||
|  | #    It is forbidden to publish, distribute, sublicense, or sell copies | ||||
|  | #    of the Software or modified copies of the Software. | ||||
|  | # | ||||
|  | #    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 | ||||
|  | #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | ||||
|  | #    If not, see <https://www.gnu.org/licenses/>. | ||||
|  | # | ||||
|  | ############################################################################## | ||||
|  | 
 | ||||
|  | from odoo import models, fields, _ | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | class TransportReport(models.TransientModel): | ||||
|  |     _name = 'transport.report.wizard' | ||||
|  | 
 | ||||
|  |     start_date = fields.Date(string="From Date") | ||||
|  |     end_date = fields.Date(string="To Date") | ||||
|  | 
 | ||||
|  |     def print_report(self): | ||||
|  |         context = self._context | ||||
|  |         datas = {'ids': context.get('active_ids', [])} | ||||
|  |         datas['model'] = 'vehicle.status' | ||||
|  |         datas['form'] = self.read()[0] | ||||
|  |         for field in datas['form'].keys(): | ||||
|  |             if isinstance(datas['form'][field], tuple): | ||||
|  |                 datas['form'][field] = datas['form'][field][0] | ||||
|  |         return {'type': 'ir.actions.report.xml', | ||||
|  |                 'report_name': 'stock_transport_management.transport_report_xls.xlsx', | ||||
|  |                 'datas': datas, | ||||
|  |                 'name': 'Transportation Report' | ||||
|  |                 } | ||||
|  | 
 | ||||
|  | 
 | ||||