| @ -0,0 +1,48 @@ | |||
| .. image:: https://img.shields.io/badge/licence-OPL--1-red.svg | |||
|     :target: https://www.odoo.com/documentation/16.0/legal/licenses.html#odoo-apps | |||
|     :alt: License: OPL-1 | |||
| 
 | |||
| Barcode for work centers | |||
| ======================== | |||
| Enable the ability to start and stop the work order using barcode scanning. | |||
| 
 | |||
| Configuration | |||
| ============= | |||
| * No additional configurations needed | |||
| * Barcode modules are only available in enterprise edition | |||
| 
 | |||
| Company | |||
| ======= | |||
| * `Cybrosys Techno Solutions <https://cybrosys.com/>`__ | |||
| 
 | |||
| License | |||
| ======= | |||
| Odoo Proprietary License v1.0 (OPL-1) | |||
| (https://www.odoo.com/documentation/16.0/legal/licenses.html#odoo-apps) | |||
| 
 | |||
| Credits | |||
| ======= | |||
| Developer: (V16) Jaseem Sadiq K, Contact: odoo@cybrosys.com | |||
| 
 | |||
| Contacts | |||
| ======== | |||
| * Mail Contact : odoo@cybrosys.com | |||
| * Website : https://cybrosys.com | |||
| 
 | |||
| Bug Tracker | |||
| =========== | |||
| Bugs are tracked on GitHub Issues. In case of trouble, please check there if | |||
| your issue has already been reported. | |||
| 
 | |||
| Maintainer | |||
| ========== | |||
| .. image:: https://cybrosys.com/images/logo.png | |||
|    :target: https://cybrosys.com | |||
| 
 | |||
| This module is maintained by Cybrosys Technologies. | |||
| 
 | |||
| For support and more information, please visit `Our Website <https://cybrosys.com/>`__ | |||
| 
 | |||
| Further information | |||
| =================== | |||
| HTML Description: `<static/description/index.html>`__ | |||
| @ -0,0 +1,22 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jaseem (odoo@cybrosys.com) | |||
| # | |||
| #    This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1) | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies of the | |||
| #    Software or modified copies of the Software. | |||
| # | |||
| #    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| #    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| #    FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL | |||
| #    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER | |||
| #    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING | |||
| #    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |||
| #    DEALINGS IN THE SOFTWARE. | |||
| # | |||
| ############################################################################### | |||
| from . import models | |||
| @ -0,0 +1,54 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jaseem (odoo@cybrosys.com) | |||
| # | |||
| #    This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1) | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies of the | |||
| #    Software or modified copies of the Software. | |||
| # | |||
| #    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| #    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| #    FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL | |||
| #    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER | |||
| #    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING | |||
| #    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |||
| #    DEALINGS IN THE SOFTWARE. | |||
| # | |||
| ############################################################################### | |||
| { | |||
|     'name': "Barcode for work centers", | |||
|     'version': '16.0.1.0.0', | |||
|     'category': 'Manufacturing', | |||
|     'summary': 'Start and stop the work ordr using barcode', | |||
|     'description': """This module enables the functionality to initiate and  | |||
|      halt work orders using barcode scanning. It allows users to commence work  | |||
|      orders by scanning barcodes and provides buttons to pause and resume work  | |||
|      order activities.""", | |||
|     'author': 'Cybrosys Techno Solutions', | |||
|     'company': 'Cybrosys Techno Solutions', | |||
|     'maintainer': 'Cybrosys Techno Solutions', | |||
|     'website': 'https://www.cybrosys.com', | |||
|     'depends': ["stock_barcode", "stock", "mrp"], | |||
|     'data': [ | |||
|         "data/barcode_for_work_centers.xml", | |||
|         "views/mrp_routing_workcenter_views.xml", | |||
|     ], | |||
|     'assets': { | |||
|         'web.assets_backend': [ | |||
|             '/barcode_for_work_centers/static/src/js/barcode_template.js', | |||
|             '/barcode_for_work_centers/static/src/xml/manufacture_button_templates.xml', | |||
|             '/barcode_for_work_centers/static/src/xml/barcode_scan_templates.xml', | |||
|             '/barcode_for_work_centers/static/src/css/barcode_for_work_centers.scss', | |||
|         ], | |||
|     }, | |||
|     'images': ['static/description/banner.jpg'], | |||
|     'license': 'OPL-1', | |||
|     'installable': True, | |||
|     'application': False, | |||
|     'auto_install': False, | |||
| } | |||
| 
 | |||
| @ -0,0 +1,10 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <odoo> | |||
|     <!--    This record is  created a client action for creating client action for opening barcode scanning template --> | |||
|     <record id="barcode_for_work_centers.barcode_for_work_centers_scanning_template" | |||
|             model="ir.actions.client"> | |||
|         <field name="name">Barcode scanning view</field> | |||
|         <field name="tag">barcode_for_work_centers_scanning_template</field> | |||
|         <field name="target">current</field> | |||
|     </record> | |||
| </odoo> | |||
| @ -0,0 +1,6 @@ | |||
| ## Module <barcode_for_work_centers> | |||
| 
 | |||
| ##### 07.02.2024 | |||
| ##### Version 16.0.1.0.0 | |||
| ##### ADD | |||
| - Initial commit for Barcode for work centers | |||
| @ -0,0 +1,23 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jaseem (odoo@cybrosys.com) | |||
| # | |||
| #    This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1) | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies of the | |||
| #    Software or modified copies of the Software. | |||
| # | |||
| #    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| #    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| #    FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL | |||
| #    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER | |||
| #    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING | |||
| #    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |||
| #    DEALINGS IN THE SOFTWARE. | |||
| # | |||
| ############################################################################### | |||
| from . import mrp_routing_workcenter | |||
| from . import mrp_workorder | |||
| @ -0,0 +1,37 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jaseem (odoo@cybrosys.com) | |||
| # | |||
| #    This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1) | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies of the | |||
| #    Software or modified copies of the Software. | |||
| # | |||
| #    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| #    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| #    FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL | |||
| #    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER | |||
| #    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING | |||
| #    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |||
| #    DEALINGS IN THE SOFTWARE. | |||
| # | |||
| ############################################################################### | |||
| from odoo import models | |||
| 
 | |||
| 
 | |||
| class MrpRoutingWorkCenter(models.Model): | |||
|     """This class represents an extension of 'mrp.routing.workcenter' to add a | |||
|     function called 'action_barcode_scanner_template'. This function allows the | |||
|     user to click on the records of all kanban views of operations in a work | |||
|     order.""" | |||
|     _inherit = "mrp.routing.workcenter" | |||
| 
 | |||
|     def action_barcode_scanner_template(self): | |||
|         """This function is used to invoke a client action that calls the | |||
|         barcode template.""" | |||
|         return {'type': 'ir.actions.client', | |||
|                 'tag': 'barcode_for_work_centers_scanning_template', | |||
|                 'params': {'name': self.name, 'id': self.id}} | |||
| @ -0,0 +1,94 @@ | |||
| # -*- coding: utf-8 -*- | |||
| ############################################################################### | |||
| # | |||
| #    Cybrosys Technologies Pvt. Ltd. | |||
| # | |||
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |||
| #    Author: Jaseem (odoo@cybrosys.com) | |||
| # | |||
| #    This program is under the terms of the Odoo Proprietary License v1.0 (OPL-1) | |||
| #    It is forbidden to publish, distribute, sublicense, or sell copies of the | |||
| #    Software or modified copies of the Software. | |||
| # | |||
| #    THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| #    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| #    FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL | |||
| #    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,DAMAGES OR OTHER | |||
| #    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING | |||
| #    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |||
| #    DEALINGS IN THE SOFTWARE. | |||
| # | |||
| ############################################################################### | |||
| from odoo import models | |||
| 
 | |||
| 
 | |||
| class MrpWorkOrder(models.Model): | |||
|     """This class represents the inheriting add the all rpc function for js | |||
|     such as action_work_order_start_stop,action_puase,action_continue and | |||
|     action_done""" | |||
|     _inherit = "mrp.workorder" | |||
| 
 | |||
|     def action_work_order_start_stop(self, clicked_record, man_order): | |||
|         """This function is used to start and stop the work order after scanning | |||
|          barcode in barcode template , it returns the message that 'start' or ' | |||
|          stop'.""" | |||
|         record = self.env["mrp.routing.workcenter"].browse(int(clicked_record)) | |||
|         mrp_order = self.env["mrp.production"].search( | |||
|             [("name", "=", man_order)]) | |||
|         params_for_template = {} | |||
|         if record.workorder_ids and mrp_order: | |||
|             for wo in record.workorder_ids: | |||
|                 if wo.production_id.id == mrp_order.id: | |||
|                     if wo.production_state not in ['draft', 'done', | |||
|                                                    'cancel', ] and \ | |||
|                             wo.working_state != "blocked" and wo.state not in \ | |||
|                             ["done", "cancel", "progress"]: | |||
|                         wo.button_start() | |||
|                         params_for_template.update( | |||
|                             {"pop_up": "start", "duration": wo.duration}) | |||
|                     elif wo.state != "done": | |||
|                         wo.button_finish() | |||
|                         params_for_template.update({"pop_up": "end"}) | |||
|                     elif wo.state == "done": | |||
|                         params_for_template.update({"pop_up": "already done"}) | |||
|                     else: | |||
|                         params_for_template.update({"pop_up": "not match"}) | |||
|         else: | |||
|             params_for_template.update({"pop_up": "not match"}) | |||
|         return params_for_template | |||
| 
 | |||
|     def action_pause(self, clicked_record, man_order): | |||
|         """This function is used to perform action pause  while clicking the | |||
|         pause button from barcode scanning template """ | |||
|         record = self.env["mrp.routing.workcenter"].browse(int(clicked_record)) | |||
|         mrp_order = self.env["mrp.production"].search( | |||
|             [("name", "=", man_order)]) | |||
|         if record.workorder_ids and mrp_order: | |||
|             for wo in record.workorder_ids: | |||
|                 if wo.production_id.id == mrp_order.id: | |||
|                     wo.button_pending() | |||
|                     return "paused" | |||
| 
 | |||
|     def action_continue(self, clicked_record, man_order): | |||
|         """This function is used to continue the work order after clicking the | |||
|         continue button""" | |||
|         record = self.env["mrp.routing.workcenter"].browse(int(clicked_record)) | |||
|         mrp_order = self.env["mrp.production"].search( | |||
|             [("name", "=", man_order)]) | |||
|         if record.workorder_ids and mrp_order: | |||
|             for wo in record.workorder_ids: | |||
|                 if wo.production_id.id == mrp_order.id: | |||
|                     wo.button_start() | |||
|                     return "continue" | |||
| 
 | |||
|     def action_done(self, clicked_record, man_order): | |||
|         """This function is used to stop the work order after clicking the | |||
|             done button""" | |||
|         record = self.env["mrp.routing.workcenter"].browse(int(clicked_record)) | |||
|         mrp_order = self.env["mrp.production"].search( | |||
|             [("name", "=", man_order)]) | |||
|         if record.workorder_ids and mrp_order: | |||
|             for wo in record.workorder_ids: | |||
|                 if wo.production_id.id == mrp_order.id: | |||
|                     wo.button_finish() | |||
|                     return "done" | |||
| After Width: | Height: | Size: 3.6 KiB | 
| After Width: | Height: | Size: 310 B | 
| After Width: | Height: | Size: 1.3 KiB | 
| After Width: | Height: | Size: 1.4 KiB | 
| After Width: | Height: | Size: 576 B | 
| After Width: | Height: | Size: 733 B | 
| After Width: | Height: | Size: 911 B | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 673 B | 
| After Width: | Height: | Size: 878 B | 
| After Width: | Height: | Size: 653 B | 
| After Width: | Height: | Size: 905 B | 
| After Width: | Height: | Size: 839 B | 
| After Width: | Height: | Size: 427 B | 
| After Width: | Height: | Size: 627 B | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 988 B | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 1.5 KiB | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 1.9 KiB | 
| After Width: | Height: | Size: 1.1 KiB | 
| After Width: | Height: | Size: 2.1 KiB | 
| After Width: | Height: | Size: 4.4 KiB | 
| After Width: | Height: | Size: 589 B | 
| After Width: | Height: | Size: 3.4 KiB | 
| After Width: | Height: | Size: 1.7 KiB | 
| After Width: | Height: | Size: 2.3 KiB | 
| After Width: | Height: | Size: 967 B | 
| After Width: | Height: | Size: 1.6 KiB | 
| After Width: | Height: | Size: 3.8 KiB | 
| After Width: | Height: | Size: 5.0 KiB | 
| After Width: | Height: | Size: 47 KiB | 
| After Width: | Height: | Size: 56 KiB | 
| After Width: | Height: | Size: 56 KiB | 
| After Width: | Height: | Size: 59 KiB | 
| After Width: | Height: | Size: 1.8 MiB | 
| After Width: | Height: | Size: 57 KiB | 
| After Width: | Height: | Size: 1.0 MiB | 
| After Width: | Height: | Size: 28 KiB | 
| After Width: | Height: | Size: 108 KiB | 
| After Width: | Height: | Size: 130 KiB | 
| After Width: | Height: | Size: 168 KiB | 
| After Width: | Height: | Size: 60 KiB | 
| After Width: | Height: | Size: 64 KiB | 
| After Width: | Height: | Size: 55 KiB | 
| After Width: | Height: | Size: 154 KiB | 
| After Width: | Height: | Size: 149 KiB | 
| After Width: | Height: | Size: 72 KiB | 
| After Width: | Height: | Size: 14 KiB | 
| @ -0,0 +1,588 @@ | |||
| <div style="background-color: #00438B; min-height: 600px; width: 100%; padding: 15px; position: relative;"> | |||
|     <!-- TITLE BAR --> | |||
|     <div class="d-flex align-items-center justify-content-between" | |||
|          style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> | |||
|         <img src="assets/misc/cybrosys-logo.png" width="42" height="42" | |||
|              style="width: 42px; height: 42px;"/> | |||
|         <div> | |||
|             <div style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | |||
|                  class="mr-2"> | |||
|                 <i class="fa fa-check mr-1"></i>Enterprise | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
|     <!-- END OF TITLE BAR --> | |||
|     <div class="container"> | |||
|         <div class="row"> | |||
|             <div class="col-sm-12 col-md-12 col-lg-12"> | |||
|                 <!-- APP HERO --> | |||
|                 <h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;"> | |||
|                     Barcode For Work Centers</h1> | |||
|                 <p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;"> | |||
|                     Start And Stop Work Order With Barcode</p> | |||
|                 <!-- END OF APP HERO --> | |||
|                 <img src="assets/screenshots/hero.gif" class="img-responsive" | |||
|                      style="width: 100%; margin-left: auto; margin-right: auto;"/> | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
| </div> | |||
| <!-- NAVIGATION SECTION --> | |||
| <div class="d-flex align-items-center" | |||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;"> | |||
|     <div class="d-flex justify-content-center align-items-center mr-2" | |||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|         <img src="assets/misc/compass.png"/> | |||
|     </div> | |||
|     <h2 class="mt-2" | |||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|         Explore This Module</h2> | |||
| </div> | |||
| <div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> | |||
|     <div class="col-sm-12 col-md-6 my-3"> | |||
|         <a href="#overview"> | |||
|             <div class="d-flex justify-content-between align-items-center" | |||
|                  style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | |||
|                 <div> | |||
|                     <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span> | |||
|                     <span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">Learn more about this module</span> | |||
|                 </div> | |||
|                 <img src="assets/misc/right-arrow.png" width="36" height="36"/> | |||
|             </div> | |||
|         </a> | |||
|     </div> | |||
|     <div class="col-sm-12 col-md-6 my-3"> | |||
|         <a href="#features"> | |||
|             <div class="d-flex justify-content-between align-items-center" | |||
|                  style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | |||
|                 <div> | |||
|                     <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span> | |||
|                     <span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">View features of this module</span> | |||
|                 </div> | |||
|                 <img src="assets/misc/right-arrow.png" width="36" height="36"/> | |||
|             </div> | |||
|         </a> | |||
|     </div> | |||
|     <div class="col-sm-12 col-md-6 my-3"> | |||
|         <a href="#screenshots"> | |||
|             <div class="d-flex justify-content-between align-items-center" | |||
|                  style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | |||
|                 <div> | |||
|                     <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span> | |||
|                     <span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">View screenshots for this module</span> | |||
|                 </div> | |||
|                 <img src="assets/misc/right-arrow.png" width="36" height="36"/> | |||
|             </div> | |||
|         </a> | |||
|     </div> | |||
| </div> | |||
| <!-- END OF NAVIGATION SECTION --> | |||
| <!-- OVERVIEW SECTION --> | |||
| <div class="d-flex align-items-center" | |||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview"> | |||
|     <div class="d-flex justify-content-center align-items-center mr-2" | |||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|         <img src="assets/misc/pie-chart.png"/> | |||
|     </div> | |||
|     <h2 class="mt-2" | |||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|         Overview </h2> | |||
| </div> | |||
| <div class="row" | |||
|      style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | |||
|     <div class="col-sm-12 py-4"> This app help to start and stop work order of | |||
|         manufacturing order using barcode | |||
|     </div> | |||
| </div> | |||
| <!-- END OF OVERVIEW SECTION --> | |||
| <!-- FEATURES SECTION --> | |||
| <div class="d-flex align-items-center" | |||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features"> | |||
|     <div class="d-flex justify-content-center align-items-center mr-2" | |||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|         <img src="assets/misc/features.png"/> | |||
|     </div> | |||
|     <h2 class="mt-2" | |||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|         Features </h2> | |||
| </div> | |||
| <div class="row" | |||
|      style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | |||
|     <div class="col-sm-12 col-md-6"> | |||
|         <div class="d-flex align-items-center" | |||
|              style="margin-top: 40px; margin-bottom: 40px"> | |||
|             <img src="assets/misc/check-box.png" class="mr-2"/> | |||
|             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Support in odoo Enterprise</span> | |||
|         </div> | |||
|     </div> | |||
| </div> | |||
| <div class="row" | |||
|      style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | |||
|     <div class="col-sm-12 col-md-6"> | |||
|         <div class="d-flex align-items-center" | |||
|              style="margin-top: 40px; margin-bottom: 40px"> | |||
|             <img src="assets/misc/check-box.png" class="mr-2"/> | |||
|             <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">We can use barcode scanning to begin and end work orders. | |||
|       </span> | |||
|         </div> | |||
|     </div> | |||
| </div> | |||
| <!-- END OF FEATURES SECTION --> | |||
| <!-- SCREENSHOTS SECTION --> | |||
| <div class="d-flex align-items-center" | |||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;" | |||
|      id="screenshots"> | |||
|     <div class="d-flex justify-content-center align-items-center mr-2" | |||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|         <img src="assets/misc/pictures.png"/> | |||
|     </div> | |||
|     <h2 class="mt-2" | |||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|         Screenshots </h2> | |||
| </div> | |||
| <div class="row"> | |||
|     <div class="col-sm-12"> | |||
|         <div style="display: block; margin: 30px auto;"> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | |||
|                 Go to Barcode Module</h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> | |||
|                 Open WORK ORDER <br> | |||
|             </p> | |||
|             <img src="assets/screenshots/1.png" class="img-thumbnail"> | |||
|         </div> | |||
|         <div style="display: block; margin: 30px auto;"> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | |||
|                 Here we can see all operations.</h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> | |||
|                 Choose correct operation <br> | |||
|             </p> | |||
|             <img src="assets/screenshots/2.png" class="img-thumbnail"> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> | |||
|                 <br> | |||
|             </p> | |||
|         </div> | |||
|         <div style="display: block; margin: 30px auto;"> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | |||
| 
 | |||
|             </h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> | |||
| 
 | |||
|             </p> | |||
|             <img src="assets/screenshots/3.png" class="img-thumbnail"> | |||
|         </div> | |||
|         <div style="display: block; margin: 30px auto;"> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Fill the Bill of materials with the Operations can add the Work Order and operations in the Operations Tab | |||
|             </h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"></p> | |||
|             <img src="assets/screenshots/4.png" class="img-thumbnail"> | |||
|         </div> | |||
|         <div style="display: block; margin: 30px auto;"> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Create the Manufacture Order and Scan the barcode of the manufacture | |||
|                 </h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"></p> | |||
|             <img src="assets/screenshots/5.png" class="img-thumbnail"> | |||
|         </div> | |||
|         <div style="display: block; margin: 30px auto;"> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | |||
|                 Click start stop Button</h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"></p> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat',sans-serif; font-size: 14px;"> | |||
|                 The work for the corresponding work order will be started.</p> | |||
|             <img src="assets/screenshots/6.png" class="img-thumbnail"> | |||
|             <br> | |||
|             <br> | |||
|             <br> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | |||
|                 We have the ability to pause and resume the work order.</h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat',sans-serif; font-size: 14px;"> | |||
|                 We can stop the work order by either clicking the 'Done' button | |||
|                 or scanning the barcode on the input field.</p> | |||
|             <img src="assets/screenshots/7.png" class="img-thumbnail"> | |||
|         </div> | |||
|         <div style="display: block; margin: 30px auto;"> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | |||
|                 After Clicking the Done Button can close the Work  Order</h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> | |||
|                 Now, the Manufacturing comes done, and we can move to the next step, Also the work order comes completed</p> | |||
|             <img src="assets/screenshots/8.png" class="img-thumbnail"> | |||
|         </div> | |||
|         <div style="display: block; margin: 30px auto;"> | |||
|             <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> | |||
|                 Shows the  Completed work order in the TO CLOSE state</h3> | |||
|             <p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"></p> | |||
|             <img src="assets/screenshots/9.png" class="img-thumbnail"> | |||
|         </div> | |||
|     </div> | |||
| </div> | |||
| <!-- END OF SCREENSHOTS SECTION --> | |||
| <!-- RELATED PRODUCTS --> | |||
| <div class="d-flex align-items-center" | |||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | |||
|     <div class="d-flex justify-content-center align-items-center mr-2" | |||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|         <img src="assets/misc/categories.png"/> | |||
|     </div> | |||
|     <h2 class="mt-2" | |||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|         Related Products </h2> | |||
| </div> | |||
| <div class="row"> | |||
|     <div class="col-sm-12"> | |||
|         <div id="demo1" class="row carousel slide" data-ride="carousel"> | |||
|             <!-- The slideshow --> | |||
|             <div class="carousel-inner" style="padding:30px"> | |||
|                 <div class="carousel-item" style="min-height:198.656px"> | |||
|                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | |||
|                          style="float:left"> | |||
|                         <a href="https://apps.odoo.com/apps/modules/16.0/simple_mrp_order/" | |||
|                            target="_blank"> | |||
|                             <div style="border-radius:10px"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-radius:0px" | |||
|                                      src="//apps.odoocdn.com/apps/assets/16.0/hide_all_print_button/assets/modules/1.png?6d5ca15"> | |||
|                             </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/16.0/bom_multiple_product/" | |||
|                            target="_blank"> | |||
|                             <div style="border-radius:10px"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-radius:0px" | |||
|                                      src="//apps.odoocdn.com/apps/assets/16.0/hide_all_print_button/assets/modules/2.png?6d5ca15"> | |||
|                             </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/16.0/cw_mrp/" | |||
|                            target="_blank"> | |||
|                             <div style="border-radius:10px"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-radius:0px" | |||
|                                      src="//apps.odoocdn.com/apps/assets/16.0/hide_all_print_button/assets/modules/3.png?6d5ca15"> | |||
|                             </div> | |||
|                         </a> | |||
|                     </div> | |||
|                 </div> | |||
|                 <div class="carousel-item active" style="min-height:198.656px"> | |||
|                     <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" | |||
|                          style="float:left"> | |||
|                         <a href="https://apps.odoo.com/apps/modules/16.0/manufacturing_reports/" | |||
|                            target="_blank"> | |||
|                             <div style="border-radius:10px"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-radius:0px" | |||
|                                      src="//apps.odoocdn.com/apps/assets/16.0/hide_all_print_button/assets/modules/4.png?6d5ca15"> | |||
|                             </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/16.0/mrp_work_order_print/" | |||
|                            target="_blank"> | |||
|                             <div style="border-radius:10px"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-radius:0px" | |||
|                                      src="//apps.odoocdn.com/apps/assets/16.0/hide_all_print_button/assets/modules/5.png?6d5ca15"> | |||
|                             </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/16.0/bom_total_cost/" | |||
|                            target="_blank"> | |||
|                             <div style="border-radius:10px"> | |||
|                                 <img class="img img-responsive center-block" | |||
|                                      style="border-radius:0px" | |||
|                                      src="//apps.odoocdn.com/apps/assets/16.0/hide_all_print_button/assets/modules/6.png?6d5ca15"> | |||
|                             </div> | |||
|                         </a> | |||
|                     </div> | |||
|                 </div> | |||
|             </div> | |||
|             <!-- Left and right controls --> | |||
|             <a class="carousel-control-prev" href="#demo1" data-slide="prev" | |||
|                style="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="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 RELATED PRODUCTS --> | |||
| <!-- OUR SERVICES --> | |||
| <div class="d-flex align-items-center" | |||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | |||
|     <div class="d-flex justify-content-center align-items-center mr-2" | |||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|         <img src="assets/misc/star.png"/> | |||
|     </div> | |||
|     <h2 class="mt-2" | |||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|         Our Services </h2> | |||
| </div> | |||
| <div class="container my-5"> | |||
|     <div class="row"> | |||
|         <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> | |||
| </div> | |||
| <!-- END OF OUR SERVICES --> | |||
| <!-- OUR INDUSTRIES --> | |||
| <div class="d-flex align-items-center" | |||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | |||
|     <div class="d-flex justify-content-center align-items-center mr-2" | |||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|         <img src="assets/misc/corporate.png"/>F | |||
|     </div> | |||
|     <h2 class="mt-2" | |||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|         Our Industries </h2> | |||
| </div> | |||
| <div class="container my-5"> | |||
|     <div class="row"> | |||
|         <div class="col-lg-3"> | |||
|             <div class="my-4 d-flex flex-column justify-content-center" | |||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; 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: 0px; 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: 0px; 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: 0px; 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: 0px; padding: 2rem !important; height: 250px !important;"> | |||
|                 <img src="assets/icons/ecom-black.png" | |||
|                      class="img-responsive mb-3" height="48px" width="48px"> | |||
|                 <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | |||
|                     E-commerce & Website </h5> | |||
|                 <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | |||
|                     Mobile friendly, awe-inspiring product pages</p> | |||
|             </div> | |||
|         </div> | |||
|         <div class="col-lg-3"> | |||
|             <div class="my-4 d-flex flex-column justify-content-center" | |||
|                  style="background-color: #f6f8f9 !important; border-radius: 0px; 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: 0px; 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: 0px; 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> | |||
| </div> | |||
| <!-- END OF OUR INDUSTRIES --> | |||
| <!-- SUPPORT --> | |||
| <div class="d-flex align-items-center" | |||
|      style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | |||
|     <div class="d-flex justify-content-center align-items-center mr-2" | |||
|          style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | |||
|         <img src="assets/misc/customer-support.png"/> | |||
|     </div> | |||
|     <h2 class="mt-2" | |||
|         style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> | |||
|         Support </h2> | |||
| </div> | |||
| <div class="container mt-5"> | |||
|     <div class="row"> | |||
|         <div class="col-sm-12 col-md-6"> | |||
|             <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | |||
|                 <div class="mr-4 d-flex justify-content-center align-items-center" | |||
|                      style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | |||
|                     <img src="assets/misc/support.png" height="48" width="48" | |||
|                          style="width: 42px; height: 42px;"/> | |||
|                 </div> | |||
|                 <div> | |||
|                     <h4>Need Help?</h4> | |||
|                     <p style="line-height: 100%;">Got questions or need help? | |||
|                         Get in touch.</p> | |||
|                     <a href="mailto:odoo@cybrosys.com"> | |||
|                         <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> | |||
|                             odoo@cybrosys.com</p> | |||
|                     </a> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
|         <div class="col-sm-12 col-md-6"> | |||
|             <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | |||
|                 <div class="mr-4 d-flex justify-content-center align-items-center" | |||
|                      style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | |||
|                     <img src="assets/misc/whatsapp.png" height="52" width="52" | |||
|                          style="width: 52px; height: 52px;"/> | |||
|                 </div> | |||
|                 <div> | |||
|                     <h4>WhatsApp</h4> | |||
|                     <p style="line-height: 100%;">Say hi to us on WhatsApp!</p> | |||
|                     <a href="https://api.whatsapp.com/send?phone=918606827707"> | |||
|                         <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> | |||
|                             +91 86068 27707</p> | |||
|                     </a> | |||
|                 </div> | |||
|             </div> | |||
|         </div> | |||
|     </div> | |||
|     <div class="row"> | |||
|         <div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> | |||
|             <img src="assets/misc/logo.png" width="144" height="31" | |||
|                  style="width:144px; height: 31px; margin-top: 40px;"/> | |||
|         </div> | |||
|     </div> | |||
| </div> | |||
| <!-- END OF SUPPORT --> | |||
| @ -0,0 +1,123 @@ | |||
| body { | |||
|   background-color: #714B67; | |||
| } | |||
| #work_order_timer_id { | |||
|   color: red; | |||
|   font-size: 50px; | |||
|   font-family: "Orbitron", sans-serif; | |||
| } | |||
| .header-text { | |||
|   color: black; | |||
|   font-family: "Abril Fatface"; | |||
|   font-size: 70px; | |||
|   font-weight: 600; | |||
|   padding-top: 10px; | |||
| } | |||
| .button_for_barcode { | |||
|   display: flex; | |||
|   margin-left: 72%; | |||
|   padding-top: 5%; | |||
|   gap: 5px; | |||
|   border-radius: 6px; | |||
| } | |||
| .pause_workOrder { | |||
|   display: inline-block; | |||
|   outline: none; | |||
|   cursor: pointer; | |||
|   font-weight: 600; | |||
|   border-radius: 3px; | |||
|   padding: 12px 24px; | |||
|   border: 0; | |||
|   color: #fff; | |||
|   background: #ff5000; | |||
|   line-height: 1.15; | |||
|   font-size: 16px; | |||
|   :hover { | |||
|     transition: all 0.1s ease; | |||
|     box-shadow: 0 0 0 0 #fff, 0 0 0 3px #1de9b6; | |||
|   } | |||
| } | |||
| .continue_workOrder { | |||
|   display: inline-block; | |||
|   outline: none; | |||
|   cursor: pointer; | |||
|   font-weight: 600; | |||
|   border-radius: 3px; | |||
|   padding: 12px 24px; | |||
|   border: 0; | |||
|   color: #000021; | |||
|   background: #1de9b6; | |||
|   line-height: 1.15; | |||
|   font-size: 16px; | |||
|   :hover { | |||
|     transition: all 0.1s ease; | |||
|     box-shadow: 0 0 0 0 #fff, 0 0 0 3px #1de9b6; | |||
|   } | |||
| } | |||
| .done_workOrder { | |||
|   display: inline-block; | |||
|   outline: none; | |||
|   cursor: pointer; | |||
|   font-weight: 600; | |||
|   border-radius: 3px; | |||
|   padding: 12px 24px; | |||
|   border: 0; | |||
|   color: #fff; | |||
|   background: #000a47; | |||
|   line-height: 1.15; | |||
|   font-size: 16px; | |||
|   :hover { | |||
|     transition: all 0.1s ease; | |||
|     box-shadow: 0 0 0 0 #fff, 0 0 0 3px #1de9b6; | |||
|   } | |||
| } | |||
| .timer-display { | |||
|   margin-left: 75%; | |||
|   padding-top: 22px; | |||
|   padding-left: 70px; | |||
| } | |||
| .form-control{ | |||
|     width:100%; | |||
|     border-width: 5px; | |||
|     border-color: #13120d; | |||
|     border-radius: 6px; | |||
|     height: 70; | |||
|     /* place-content: center; */ | |||
|     color: brown; | |||
|     font-size: xx-large; | |||
|     text-align: center; | |||
| } | |||
| #barcode_scan_button_id{ | |||
|     display: inline-block; | |||
|     outline: 0; | |||
|     border: 0; | |||
|     cursor: pointer; | |||
|     background: #000000; | |||
|     color: #FFFFFF; | |||
|     border-radius: 8px; | |||
|     padding: 14px 24px 16px; | |||
|     font-size: 18px; | |||
|     font-weight: 700; | |||
|     line-height: 1; | |||
|     transition: transform 200ms,background 200ms; | |||
|     :hover{ | |||
|         transform: translateY(-2px); | |||
|     } | |||
|     margin-top:3%; | |||
| 
 | |||
| } | |||
| .barcode_main_class{ | |||
| display: flex; | |||
|     flex-direction: column; | |||
|     align-items: center; | |||
|     justify-content: center; | |||
|     margin-top: 17%; | |||
| } | |||
| @media (max-width: 390px){ | |||
|     .timer-display{ | |||
|       margin-left: -65px; | |||
|     } | |||
|     .button_for_barcode{ | |||
|         margin-left:87px; | |||
|     } | |||
| } | |||
| @ -0,0 +1,227 @@ | |||
| /** @odoo-module */ | |||
| import { registry } from '@web/core/registry'; | |||
| import { onWillStart, Component } from "@odoo/owl"; | |||
| const actionRegistry = registry.category("actions"); | |||
| import { useService } from "@web/core/utils/hooks"; | |||
| import { useAutofocus } from "@web/core/utils/hooks"; | |||
| const { useRef } = owl; | |||
| import rpc from "web.rpc"; | |||
| var hours = 0; | |||
| var minutes = 0; | |||
| var seconds = 0; | |||
| var isPaused = true; | |||
| 
 | |||
| /** | |||
|  * Represents a barcode scanning view component. | |||
|  */ | |||
| class BarcodeScanningView extends Component { | |||
|     /** | |||
|      * Initializes the necessary services and references for the application. | |||
|      * - Sets up action and notification services. | |||
|      * - Sets up an input reference with autofocus. | |||
|      * - Initializes references for manual order, pause, continue buttons, and a timer. | |||
|      * | |||
|      **/ | |||
|     setup() { | |||
|         this.action = useService("action"); | |||
|         this.notification = useService("notification"); | |||
|         this.inputRef = useAutofocus(); | |||
|         this.man_order =useRef('autofocus') | |||
|         this.pause_ref = useRef('pause-ref'); | |||
|         this.continue_ref = useRef('continue-ref') | |||
|         this.buttons_ref = useRef('buttons-ref'); | |||
|         this.timer = useRef('timer'); | |||
|         super.setup(...arguments); | |||
|         onWillStart(async () => { | |||
|         }); | |||
|         } | |||
| 
 | |||
|     /** | |||
|      * Executes the scanning process. | |||
|      */ | |||
|     ScanNow() { | |||
|         var self = this; | |||
|         var man_order = this.man_order.el.value; | |||
|         if (!man_order) { | |||
|             self.notification.add(self.env._t("Scan the barcode on input field"), { | |||
|                 type: "success", | |||
|             }); | |||
|         } else { | |||
|             this.clicked_record = this.props.action.params.id; | |||
|             var clicked_record = this.props.action.params.id; | |||
|             rpc.query({ | |||
|                 model: 'mrp.workorder', | |||
|                 method: 'action_work_order_start_stop', | |||
|                 args: [, clicked_record, man_order], | |||
|             }).then(function (result) { | |||
|                 var state = result; | |||
|                 if (state["pop_up"] == "start") { | |||
|                     self.buttons_ref.el.classList.remove('d-none'); | |||
|                     self.continue_ref.el.classList.add('d-none') | |||
|                     self.notification.add(self.env._t("Work order started"), { | |||
|                         type: "success", | |||
|                     }); | |||
|                     self.TimerStart(); | |||
|                 } else if (state["pop_up"] == "end") { | |||
|                     self.notification.add(self.env._t("Work order finished"), { | |||
|                         type: "success", | |||
|                     }); | |||
|                     self.buttons_ref.el.classList.add('d-none') | |||
|                     self.PauseTimer(); | |||
|                 } else if (state["pop_up"] == "already done") { | |||
|                     self.notification.add(self.env._t("It is already in a done state"), { | |||
|                         type: "success", | |||
|                     }); | |||
|                     self.continue_ref.el.classList.add('d-none') | |||
|                 } else if (state["pop_up"] == "not match") { | |||
|                     self.pause_ref.el.classList.add('d-none') | |||
|                     self.notification.add(self.env._t("No matching manufacturing order for this barcode"), { | |||
|                         type: "danger", | |||
|                     }); | |||
|                 } | |||
|             }); | |||
|         } | |||
|     } | |||
|     /** | |||
|      * Pauses the work order. | |||
|      */ | |||
|     pauseWorkOrder() { | |||
|         var self = this; | |||
|         var man_order = this.man_order.el.value; | |||
|         var clicked_record = this.clicked_record; | |||
|         rpc.query({ | |||
|             model: 'mrp.workorder', | |||
|             method: 'action_pause', | |||
|             args: [, clicked_record, man_order], | |||
|         }).then(function (result) { | |||
|             if (result == "paused") { | |||
|                 self.continue_ref.el.classList.remove('d-none'); | |||
|                 self.pause_ref.el.classList.add('d-none') | |||
|                 self.notification.add(self.env._t("All work orders are paused"), { | |||
|                     type: "danger", | |||
|                 }); | |||
|                 self.PauseTimer(); | |||
|             } | |||
|         }); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * Continues the work order. | |||
|      */ | |||
|     ContinueWorkOrder() { | |||
|         var self = this; | |||
|         var man_order = this.man_order.el.value; | |||
|         var clicked_record = this.clicked_record; | |||
|         rpc.query({ | |||
|             model: 'mrp.workorder', | |||
|             method: 'action_continue', | |||
|             args: [, clicked_record, man_order], | |||
|         }).then(function (result) { | |||
|             if (result == "continue") { | |||
|                 self.pause_ref.el.classList.remove('d-none'); | |||
|                 self.continue_ref.el.classList.add('d-none') | |||
|                 self.notification.add(self.env._t("Work order continued"), { | |||
|                     type: "success", | |||
|                 }); | |||
|                 self.TimerStart(); | |||
|             } | |||
|         }); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * Marks the work order as done. | |||
|      */ | |||
|     doneWorkOrder() { | |||
|         var self = this | |||
|         var man_order = this.man_order.el.value | |||
|         var clicked_record = this.clicked_record | |||
|         rpc.query({ | |||
|             model: 'mrp.workorder', | |||
|             method: 'action_done', | |||
|             args: [, clicked_record, man_order], | |||
|         }).then(function(result) { | |||
|             if (result == "done") { | |||
|                 self.buttons_ref.el.classList.add('d-none') | |||
|                 self.notification.add(self.env._t("Work order completed"), { | |||
|                     type: "success", | |||
|                 }); | |||
|                 self.PauseTimer(); | |||
|                 self.ResetTimer(); | |||
|             } | |||
|         }); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * Starts the timer. | |||
|      */ | |||
|     TimerStart() { | |||
|         if (isPaused) { | |||
|             isPaused = false; | |||
|             this.timer.el.classList.remove('d-none'); | |||
|             this.setInterval = setInterval(displayTimer, 1000); | |||
|         } | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * Pauses the timer. | |||
|      */ | |||
|     PauseTimer() { | |||
|         isPaused = true; | |||
|         clearInterval(this.setInterval); | |||
|     } | |||
| 
 | |||
|     /** | |||
|      * Resets the timer. | |||
|      */ | |||
|     ResetTimer() { | |||
|         clearInterval(this.setInterval); | |||
|         seconds = 0; | |||
|         minutes = 0; | |||
|         hours = 0; | |||
|         this.timer.el.classList.add('d-none') | |||
|     } | |||
|     static template = "barcode_scanning_view"; | |||
| } | |||
| 
 | |||
| /** | |||
|  * Displays the timer. | |||
|  */ | |||
| function displayTimer() { | |||
|     this.$('.timer-display').empty(); | |||
|     seconds = seconds + 1; | |||
|     if (seconds == 60) { | |||
|         minutes = minutes + 1; | |||
|         seconds = 0; | |||
|     } | |||
|     if (minutes == 60) { | |||
|         hours = hours + 1; | |||
|         minutes = 0; | |||
|     } | |||
|     if (seconds < 10) { | |||
|         var s = "0" + seconds; | |||
|     } | |||
|     if (seconds >= 10) { | |||
|         var s = seconds; | |||
|     } | |||
|     if (minutes < 10) { | |||
|         var m = "0" + minutes; | |||
|     } | |||
|     if (minutes >= 10) { | |||
|         var m = minutes; | |||
|     } | |||
|     if (hours < 10) { | |||
|         var h = "0" + hours; | |||
|     } | |||
|     if (hours >= 10) { | |||
|         var h = hours; | |||
|     } | |||
|     this.$('.timer-display').append(h + ':' + m + ':' + s); | |||
| } | |||
| 
 | |||
| /** | |||
|  * Template for the barcode scanning view. | |||
|  */ | |||
| BarcodeScanningView.template = "barcode_scanning_view"; | |||
| 
 | |||
| // Add the barcode scanning view to the action registry
 | |||
| actionRegistry.add('barcode_for_work_centers_scanning_template', BarcodeScanningView); | |||
| @ -0,0 +1,72 @@ | |||
| <?xml version="1.0" encoding="UTF-8" ?> | |||
| <template id="barcode_scan_view_template_id"> | |||
|     <t t-name="barcode_scanning_view" owl="1"> | |||
|         <head> | |||
|             <!-- Link to Google Fonts --> | |||
|             <link href='https://fonts.googleapis.com/css?family=Lato'/> | |||
|             <link rel="stylesheet" | |||
|                   href="https://fonts.googleapis.com/css?family=Sofia"/> | |||
|             <link href='https://fonts.googleapis.com/css?family=Orbitron' | |||
|                   rel='stylesheet' type='text/css'/> | |||
|             <link rel="stylesheet" type="text/css" | |||
|                   href="https://fonts.googleapis.com/css?family=Abril+Fatface"/> | |||
|             <meta charset="UTF-8"/> | |||
|             <meta http-equiv="X-UA-Compatible" content="IE=edge"/> | |||
|             <meta name="viewport" | |||
|                   content="width=device-width, initial-scale=1.0"/> | |||
|             <!-- Include jQuery library --> | |||
|             <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"/> | |||
|         </head> | |||
|         <body> | |||
|             <center> | |||
|                 <div class="seven"> | |||
|                     <h1> | |||
|                         <span class="header-text" | |||
|                               t-esc="this.props.action.params.name"/> | |||
|                     </h1> | |||
|                 </div> | |||
|                 <div class="container"> | |||
|                     <div class="timer-display d-none" t-ref="timer" | |||
|                          id="work_order_timer_id">00:00:00 | |||
|                     </div> | |||
|                 </div> | |||
|             </center> | |||
|             <!-- Buttons Section --> | |||
|             <div class="container button_for_barcode d-none" | |||
|                  t-ref="buttons-ref"> | |||
|                 <!-- Pause Work Order Button --> | |||
|                 <div t-on-click="pauseWorkOrder" t-ref="pause-ref" | |||
|                      class="btn-info pause_workOrder" | |||
|                      id="button_for_barcode_pause">Pause | |||
|                 </div> | |||
|                 <!-- Continue Work Order Button --> | |||
|                 <button t-on-click="ContinueWorkOrder" | |||
|                         id="button_for_barcode_continue" t-ref="continue-ref" | |||
|                         class="btn-success continue_workOrder">Continue | |||
|                 </button> | |||
|                 <!-- Done Work Order Button --> | |||
|                 <button t-on-click="doneWorkOrder" | |||
|                         class="btn-info done_workOrder">Done | |||
|                 </button> | |||
|             </div> | |||
|             <!-- Barcode Scanning Section --> | |||
|             <div class="barcode_main_class"> | |||
|                 <br/> | |||
|                 <center> | |||
|                     <div class="text-box"> | |||
|                         <!-- Input Field for Scanning --> | |||
|                         <input type='text' class="form-control" | |||
|                                t-ref="autofocus" id="mf_order_name_id" | |||
|                                placeholder="Scan Your Barcode Here" | |||
|                                required="1"/> | |||
|                     </div> | |||
|                 </center> | |||
|                 <!-- Scan Button --> | |||
|                 <button class="button-54" id="barcode_scan_button_id" | |||
|                         role="button" t-on-click="ScanNow">Start or Stop | |||
|                 </button> | |||
|             </div> | |||
|             <div class='spacer'/> | |||
|         </body> | |||
|     </t> | |||
| </template> | |||
| @ -0,0 +1,15 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!--Inheriting for the template for the add a button in barcode module as Work Order,and call a  ir.action_window for | |||
| the opening kanban view using Do action--> | |||
| <templates xml:space="preserve"> | |||
|     <t t-inherit="stock_barcode.MainMenu" t-inherit-mode="extension" owl="1"> | |||
|         <xpath expr="//div[hasclass('o_main_menu_buttons')]" position="inside"> | |||
|             <div class="col"> | |||
|                 <button class="button_for_work_centers btn btn-block btn-primary mb-4 w-100" | |||
|                         t-on-click="() => this.actionService.doAction('barcode_for_work_centers.action_barcode_for_work_centers_kanban')"> | |||
|                     Work Order | |||
|                 </button> | |||
|             </div> | |||
|         </xpath> | |||
|     </t> | |||
| </templates> | |||
| @ -0,0 +1,38 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <odoo> | |||
|     <!--       This record created for customized kanban view of operations in manufacturing--> | |||
|     <record id="mrp_routing_workcenter_view_kanban" model="ir.ui.view"> | |||
|         <field name="name">mrp.routing.workcenters.view.kanban</field> | |||
|         <field name="model">mrp.routing.workcenter</field> | |||
|         <field name="mode">primary</field> | |||
|         <field name="priority">20</field> | |||
|         <field name="arch" type="xml"> | |||
|             <kanban create="False" action="action_barcode_scanner_template" | |||
|                     type="object"> | |||
|                 <templates> | |||
|                     <t t-name="kanban-box"> | |||
|                         <div> | |||
|                             <div class="o_kanban_card_header"> | |||
|                                 <div class="o_primary o_kanban_record_title"> | |||
|                                     <field name="name"/> | |||
|                                 </div> | |||
|                                 <div class="o_secondary"/> | |||
|                             </div> | |||
|                             <div class="container o_kanban_card_content o_kanban_button"> | |||
|                                 <div class="row text-muted"/> | |||
|                             </div> | |||
|                         </div> | |||
|                     </t> | |||
|                 </templates> | |||
|             </kanban> | |||
|         </field> | |||
|     </record> | |||
| <!--    This record is created for action of ir.actions.act_window of operations in manufacturing--> | |||
|     <record id="action_barcode_for_work_centers_kanban" model="ir.actions.act_window"> | |||
|         <field name="name">Operations of work centers</field> | |||
|         <field name="res_model">mrp.routing.workcenter</field> | |||
|         <field name="view_mode">kanban,form</field> | |||
|         <field name="context">{ 'form_view_initial_mode': 'edit', 'force_detailed_view': True,} | |||
|         </field> | |||
|     </record> | |||
| </odoo> | |||