This commit is contained in:
gqh
2023-01-23 20:21:00 +08:00
parent 270b8d3cc1
commit 9c473e6f32
200 changed files with 5957 additions and 114 deletions

View File

@@ -0,0 +1,15 @@
Most of the files are
Copyright (c) 2012-TODAY Kanak Infosystems LLP.
Many files also contain contributions from third
parties. In this case the original copyright of
the contributions can be traced through the
history of the source version control system.
When that is not the case, the files contain a prominent
notice stating the original copyright and applicable
license, or come with their own dedicated COPYRIGHT
and/or LICENSE file.

11
login_bg_img_knk/LICENSE Normal file
View File

@@ -0,0 +1,11 @@
Kanak Infosystems LLP. Proprietary License v1.0
This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Kanak Infosystems LLP Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file).
You may develop Kanak Infosystems LLP modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Kanak Infosystems LLP Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one).
It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software.
The above copyright notice and this permission notice must be included in all copies or substantial portions 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 NONINFRINGEMENT. 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.

View File

@@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
from . import controller
from . import models

View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
{
'name': "Background image in Login page",
'version': '16.0.1.0',
'summary': """Module helps to set background image in Login page.| Background image | image|Login | Login page|website|""",
'description': """Module helps to set background image in Login page.""",
'license': 'OPL-1',
'website': "https://www.kanakinfosystems.com",
'author': 'Kanak Infosystems LLP.',
'category': 'Tools',
'depends': ['base', 'portal'],
'data': [
'views/res_company.xml',
],
'assets': {
'web.assets_frontend': [
'login_bg_img_knk/static/src/css/bg_image.scss',
],
},
'images': ['static/description/banner.gif'],
'sequence': 1,
"application": True,
"installable": True
}

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
from . import main

View File

@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
import base64
from odoo.http import Controller, request, route
from werkzeug.utils import redirect
DEFAULT_IMAGE = 'login_bg_img_knk/static/src/img/bg.jpg'
class DasboardBackground(Controller):
@route(['/dashboard'], type='http', auth="public")
def dashboard(self, **post):
user = request.env.user
company = user.company_id
if company.bg_image:
image = base64.b64decode(company.bg_image)
else:
return redirect(DEFAULT_IMAGE)
return request.make_response(
image, [('Content-Type', 'image')])

View File

@@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
from . import res_company

View File

@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
# Powered by Kanak Infosystems LLP.
# © 2020 Kanak Infosystems LLP. (<https://www.kanakinfosystems.com>).
from odoo import models, fields
class ResCompany(models.Model):
_inherit = 'res.company'
bg_image = fields.Binary(string="Image")

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -0,0 +1,409 @@
<div class="container">
<section style="background-color: white;margin-bottom: 50px;margin-top: 10px;">
<div class="row mb-sm-4 justify-content-md-between justify-content-center">
<div class="text-center ml-5 pt-3">
<a href="https://kanakinfosystems.com" target="_blank">
<img src="logo.png" style="height:55px; width:auto" alt="kanakinfosystems-logo">
</a>
</div>
<div class="text-center" style="color:#113246;margin-left:40px;text-align-last: center;">
<span class="mb-0 mt-2" style="font-size: 16px;margin-right: 68px;color: #09436d;">Supported Editions</span>
<div class="d-flex align-items-center" style="margin-left: -80px;margin-top: 10px;">
<div class="mb-0 mt-2 text-left"><span style="color:#ffffff;background-color:#7c7bad;border-radius: 5px;padding: 0.5em 0.4em;padding-right: 1.6em;padding-left:1.6em;"> Community </span></div>
<div class="mb-0 mt-2 ml-2 text-right"><span style="color:#ffffff;background-color:#007a77;border-radius: 5px;padding: 0.5em 0.4em;padding-right:1.6em;padding-left:1.6em;"> Enterprise </span></div>
<div class="mb-0 mt-2 ml-2 text-right"><span style="color:#ffffff;background-color: #6195c2;border-radius: 5px;padding: 0.5em 0.4em;padding-right:1.6em;padding-left: 1.6em;"> Odoo.sh </span></div>
</div>
</div>
<div class="text-center mt-md-0 mr-5 pt-3">
<span>
<img src="odoo-logo.png" style="height:55px; width:120" alt="odoo-logo">
</span>
</div>
</div>
</section>
<hr>
<section style="background-color: white;margin-bottom: 35px;margin-top: 50px;">
<div style="border: 1px solid;margin-right: 40px;margin-left: 40px;border-color: #dee2e6;">
<div class="row justify-content-center">
<div class="text-center">
<h3 style="font-size: 30px;padding-top: 30px;color: #23466d;font-weight: 400;">
Background image in Login page
</h3>
</div>
</div>
<div class="oe_row">
<div class="text-center" style="border:1px solid;border-color: #e9f5f9;background-color: #d6ecf385;">
<p style="font-size:21px;color:#113246;" class="px-sm-4 p-2 pt-4"><b>Background image in Login page</b> module helps to set background image in Login page.
</p>
</div>
</div>
<div class="oe_row">
<h3 style="color:#0464d5; font-size:30px; padding-bottom:20px; text-align:center; margin-top:3%">Key Features of Background image in Login page</h3>
<ul class="list-unstyled" style="margin-bottom:20px">
<li style="padding-bottom:5px; color:#091e42; font-size:20px; padding-left:30px"><i class="fa fa-hand-o-right" style="color:#28a745; font-size:25px; padding-right:5px"></i>set background image in Login page.
</li>
<li style="padding-bottom:5px; color:#091e42; font-size:20px; padding-left:30px"><i class="fa fa-hand-o-right" style="color:#28a745; font-size:25px; padding-right:5px"></i>Support Multi Company.
</li>
</ul>
</div>
</div>
</section>
<section class="oe_container">
<div style="padding: 15px 0px;" id="loempia_tabs">
<div style="border:1px solid; height:70px; margin-left:140px; margin-right:148px; border-color:#dee2e6">
<ul style="border:none; background-color:unset; margin:14px auto" data-tabs="tabs" class="nav nav-tabs justify-content-center" role="tablist">
<li class="nav-item" style="border-top-right-radius:10px; border-top-left-radius:10px; background-color:#113246; margin-right:10px; border:1px solid #ddd">
<a href="#pills-tabContent" data-toggle="tab" aria-expanded="true" class="show" style="font-family:Roboto; text-transform:uppercase; border-top-left-radius:10px; border-top-right-radius:10px; font-weight:500; font-size:15px; color:#FFFFFF; border:1px solid transparent; background-color: #113246;padding: 10px;">
<img src="//apps.odoocdn.com/apps/assets/14.0/pizza_modifiers/Configuration &amp; Setup.png?7f256cb" style="width:25px; margin-top:-4px; margin-right:4px">SCREENS</a>
</li>
<li class="nav-item" style="border-top-right-radius:10px; border-top-left-radius:10px; background-color:#113246; margin-right:10px; border:1px solid #ddd">
<a href="#pills-release" data-toggle="tab" aria-expanded="true" class="show" style="font-family:Roboto; text-transform:uppercase; border-top-left-radius:10px; border-top-right-radius:10px; font-weight:500; font-size:15px; color:#FFFFFF; border:1px solid transparent; background-color: #113246;padding: 10px;">
<img src="//apps.odoocdn.com/apps/assets/14.0/pizza_modifiers/Release Notes.png?7f256cb" style="width:25px; margin-top:-4px; margin-right:4px">RELEASE NOTES</a>
</li>
<li class="nav-item" style="border-top-right-radius:10px; border-top-left-radius:10px; background-color:#113246; margin-right:10px; border:1px solid #ddd">
<a href="#pills-faq" data-toggle="tab" aria-expanded="true" class="show" style="font-family:Roboto; text-transform:uppercase; border-top-left-radius:10px; border-top-right-radius:10px; font-weight:500; font-size:15px; color:#FFFFFF; border:1px solid transparent; background-color: #113246;padding: 10px;">
<img src="//apps.odoocdn.com/apps/assets/14.0/pizza_modifiers/FAQ'S.png?7f256cb" style="width:25px; margin-top:-4px; margin-right:4px">FAQ'S</a>
</li>
<li class="nav-item" style="border-top-right-radius:10px; border-top-left-radius:10px; background-color:#113246; border:1px solid #ddd">
<a href="#pills-support" data-toggle="tab" aria-expanded="true" class="show" style="font-family:Roboto; text-transform:uppercase; border-top-left-radius:10px; border-top-right-radius:10px; font-weight:500; font-size:15px; color:#FFFFFF; border:1px solid transparent; background-color: #113246;padding: 10px;">
<img src="//apps.odoocdn.com/apps/assets/14.0/pizza_modifiers/Support.png?7f256cb" style="width:25px; margin-top:-4px; margin-right:4px">SUPPORT</a>
</li>
</ul>
</div>
<div class="tab-content" id="myTabContent">
<div class="px-3 pt-1 mt8 tab-pane show active fade" id="pills-tabContent" role="tabpanel" aria-labelledby="pills-release-tab" style="border: 1px solid;margin-left: 75px;margin-right: 75px;margin-top: -33px;border-color: #dee2e6;">
<section>
<div class="col-md-12 pl-0 pr-0 mx-auto mb16 d-block">
<div>
<div class="p-3" style="background-color: #ffffff;">
<span class="oe_slogan" style="color: #e93a1d;font-size: 35px;font-weight: 500;">
Allows you to set login background image.</span>
</div>
<div class="row justify-content-center">
<img class="col-md-auto" src="bg1.png" style="width: 99%; margin-bottom:inherit;">
</div>
<br>
<div class="row justify-content-center">
<img class="col-md-auto" src="bg2.png" style="width: 99%; margin-bottom:inherit;">
</div>
<br>
<div class="row justify-content-center">
<img class="col-md-auto" src="bg3.png" style="width: 99%; margin-bottom:inherit;">
</div>
</div>
</div>
</section><hr>
</div>
<div class="px-3 pt-1 tab-pane fade" id="pills-release" role="tabpanel" aria-labelledby="pills-release-tab" style="margin-top: 22px;">
<section class="oe_container px-2" style="background-color: white;">
<div class="s_faq mt32 mb32" style="background-color:transparent !important;">
<div class="panel-group" id="accordion2" role="tablist" aria-multiselectable="true">
<div class="panel-group" style="margin-bottom:2%;">
<div class="panel panel-default overflow-hidden shadow" style="margin-bottom: -10px;">
<div class="panel-heading mt0 alert" style="border:1px solid transparent !important;margin:0;">
<h3 class="panel-title mb0"><a class="collapsed" style="font-family:Roboto; font-weight:500; color:#091E42; font-size:20px" data-toggle="collapse" href="#collapse_1" aria-expanded="false">
<span style=""><span style="color: #e31c2f;">V16.0.1.0</span><span style="color: #092a74;"> - DEC 1ST, 2022</span></span>
</a></h3>
</div>
<div id="collapse_1" class="panel-collapse collapse" style="">
<div class="mb16">
<div class="col-lg-12 col-md-12 ">
<ol style="padding:0 0 0 40px;margin:0px 0 10px 0;color: #0a2a67eb;">
<li>
<p>Background image in Login page</p>
</li>
<li>
<p>Optimized code.</p>
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="px-3 pt-1 tab-pane fade" id="pills-faq" role="tabpanel" aria-labelledby="pills-faq-tab" style="margin-top: 70px;">
<section>
<div class="card-body p-0">
<div class="s_faq mx-2 mx-md-5 mb-5" style="background-color:#fefefe">
<div id="accordion">
<div class="card shadow mb-2" style="border: 1px solid;border-color: #dde1e5;margin-left: -65px;margin-right: -65px;">
<div class="card-header pb-0 py-3 pl-4 pr-5 bg-white position-relative d-flex justify-content-between" style="border:none">
<div style="font-size:1.4rem; font-weight:600; color:#05376d" class="pr-5">Q Is this app compatible with Odoo Enterprise?
</div>
<a style="width:48px; height:40px; line-height:11px; background-color:rgba(5, 55, 109, 0); border-radius:2px; padding:0; font-size:23px" data-toggle="collapse" class="card-link collapsed" href="#faqOne" aria-expanded="false"></a>
</div>
<div id="faqOne" class="collapse" data-parent="#accordion" style="">
<div class="card-body pt-0 pl-4">
<div style="font-size:1.2rem;color: #05376ddb;">
Yes, our app works with Odoo Enterprise.
</div>
</div>
</div>
</div>
<div class="card shadow mb-2" style="border: 1px solid;border-color: #dde1e5;margin-left: -65px;margin-right: -65px;">
<div class="card-header pb-0 py-3 pl-4 pr-5 bg-white position-relative d-flex justify-content-between" style="border:none">
<div style="font-size:1.4rem; font-weight:600; color:#05376d" class="pr-5">Q Is this app compatible with Windows or Ubuntu?
</div>
<a style="width:48px; height:40px; line-height:11px; background-color:rgba(5, 55, 109, 0); border-radius:2px; padding:0; font-size:23px" data-toggle="collapse" class="card-link collapsed" href="#faqThree" aria-expanded="false"></a>
</div>
<div id="faqThree" class="collapse" data-parent="#accordion" style="">
<div class="card-body pt-0 pl-4">
<div style="font-size:1.2rem;color: #05376ddb;">
Yes, our app works with Windows or Ubuntu operating system.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="px-3 pt-1 tab-pane fade" id="pills-support" role="tabpanel" aria-labelledby="pills-support-tab" style="margin-top: 80px;">
<section style="text-align: center;background-color: white;margin-bottom: 30px;">
<div style="background-color:white">
<div style="display:inline-block;margin-right:10px;">
<a href="mailto:sales@kanakinfosystems.com" target="_blank" style="width: 160px;height: 111px;display:inline-block;border:1px solid;border-color:#dee2e6;border-radius:3%;text-align:center;padding:0px;">
<div style="margin-left: -1px;margin-top: 14px;">
<img src="email.png" width="160px" style="margin-top: -32px;">
</div>
</a>
</div>
<div style="display:inline-block; margin-right:10px">
<a href="skype:kanakinfosystems?chat" target="_blank" style="width:160px;height: 129px;display:inline-block;border-radius:3%;border:1px solid;border-color:#dee2e6;text-align:center;padding:30px;">
<div>
<img src="skype.png" width="160px" style="margin-left: -31px;margin-top: -31px;">
</div>
</a>
</div>
<div style="display:inline-block; margin-right:10px">
<a href="wa.me/9818108884" target="_blank" style="width:160px;height: 129px;display:inline-block;border-radius:3%;border:1px solid;border-color:#dee2e6;text-align:center;padding:30px;">
<div>
<img src="whatsapp.png" width="160px" style="margin-left: -31px;margin-top: -31px;">
</div>
</a>
</div>
<div style="display:inline-block">
<a href="kanakinfosystems.com/support/ticket/submit" target="_blank" style="width:160px;height: 129px;display:inline-block;border-radius:3%;border:1px solid;border-color:#dee2e6;text-align:center;padding:30px;">
<div>
<img src="support-ticket.png" width="160px" style="margin-left: -31px;margin-top: -31px;">
</div>
</a>
</div>
</div>
<div class="oe_row">
<div class="text-center">
<p style="border: 1px solid;width: 18cm;margin-left: 124px;border-color:#dee2e6;margin-top: 45px;"></p>
<div class="text-center">
<span class="mb-2 mt-2" style="font-size: 35px;font-weight: 500;color: #23466d;">FREE 3 MONTHS <span style="color:red;">SUPPORT</span></span>
</div>
<p style="border-bottom: 2px solid;width: 18cm;margin-left: 124px;border-color:#dee2e6;margin-top: 2px;"></p>
<p style="font-size:21px;color: #23466d;font-weight:300;" class="px-sm-4 p-2 pt-4"> Kanak Infosystems LLP. will provide free 3 months support for bug fixes, any doubts or queries, installation, configuration support or any types of issues related related to this module.<br></p>
<div style="border: 1px solid;height: 55px;padding: 10px;width: 550px;margin-left: 197px;border-color: #dee2e6;border-radius: 5px;background-color: #f8f9fa;">
<span style="color:#113246;font-size:20px;font-weight:600;">NOTE:</span>
<span style="color: #113246;font-size:20px;font-weight:300;"><b>This module do not required extra configuration.</b></span>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
</section>
</div>
</div>
</section>
</div>
<section style="background-color: white;margin-bottom: 26px;margin-top: 50px;">
<div style="border: 1px solid;margin-right: 75px;margin-left: 75px;border-color: #dee2e6;">
<div style="background-color: white;margin-bottom: 40px;text-align: center;">
<div class="text-center mt-4 mb-4">
<span class="mb-2 mt-2" style="font-size: 35px;font-weight: 500;color: #23466d;">Suggested<span style="color:red;"> Apps</span></span>
</div>
<div class="row my-3 justify-content-center p-4" style="">
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-6" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/schedule_delivery_knk/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="schedule_delivery_knk.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">
Schedule Sale Delivery This Module allows to create delivery order based on delivery schedule in sale order line. sale order delivery by date.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Schedule Sale Delivery</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 31.28</h6>
</div>
</div>
</a>
</div>
<div class="loempia_app_entry loempia_app_card col-md-6 col-lg-4" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/knk_sale_return/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="knk_sale_return.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Our Module allows user to efficiently track and manage Sale order along with their delivery returns, user can return products from Sale order itself without interacting with stock picking.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left color: black;"><b>Sale Order Return</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 52.13</h6>
</div>
</div>
</a>
</div>
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-6" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/order_history/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="order_history.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Sale Order History module manage Order History and easy way create order line from history.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Sale Order History</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 31.28</h6>
</div>
</div>
</a>
</div>
</div>
<div class="row my-3 justify-content-center p-4" style="margin-bottom: 50px;">
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-6" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/sale_approval_kanak/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="sale_approval_kanak.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Sale Approval Rules module allow to approve Sale order in a flow of action of various stakeholder on the basis of their roles.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Sale Approval Rules</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 31.28</h6>
</div>
</div>
</a>
</div>
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-4" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/sale_estimate_knk/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="sale_estimate.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Website Sale Estimate create a sales estimate and send email.And it also allows you to create sales quotations directly from sales estimates.</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Sale Estimate</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 35.67</h6>
</div>
</div>
</a>
</div>
<div class="loempia_app_entry loempia_app_card col-lg-4 col-md-6" style="">
<a href="https://apps.odoo.com/apps/modules/15.0/sale_loyalty/" target="new">
<div class="loempia_app_entry_top loempia_cover" style="padding-bottom: 0px !important; ">
<img class="card-img-top" src="sale_loyalty.jpg" alt="Card image cap">
<div class="loempia_panel_summary">
<p class="overlay-text">Customer can get Rewards points, by Loyalty Program Rules then the customer can spend those points to get rewards on purchasing.
</p>
</div>
</div>
<div class="mt-3 loempia_app_entry_bottom">
<div class="col-md-8 float-left">
<h6 class="float-left"><b>Sale Loyalty</b></h6>
</div>
<div class="col-md-4 float-right">
<h6 class="float-right">$ 52.13</h6>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
</section>
<section style="text-align: center;background-color: white;margin-bottom: 30px;">
<div class="text-center mt-5 mb-5">
<span class="mb-2 mt-2" style="font-size: 35px;font-weight: 500;color: #23466d;">Our<span style="color:red;"> Services</span></span>
</div>
<div style="background-color: white;margin-bottom: 45px;">
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/hire-odoo-developer" target="_blank" style="display:inline-block;text-align:center;padding: 0px;">
<div>
<img src="Hire-Odoo-Developer.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-customization-implementation-services" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Customization.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-development-services" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Development.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;">
<a href="https://kanakinfosystems.com/odoo-installation-services" target="_blank" style="display:inline-block;text-align: center;">
<div>
<img src="Odoo-Installation.png" width="230px">
</div>
</a>
</div>
</div>
<div style="background-color: white;">
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-integration-services" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Integration.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-resources" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Resources.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;margin-right: 10px;">
<a href="https://kanakinfosystems.com/odoo-themes" target="_blank" style="display:inline-block;text-align:center;">
<div>
<img src="Odoo-Themes.png" width="230px">
</div>
</a>
</div>
<div style="display:inline-block;">
<a href="https://kanakinfosystems.com/odoo-training" target="_blank" style="display:inline-block;text-align: center;">
<div>
<img src="Odoo-Training.png" width="230px">
</div>
</a>
</div>
</div>
</section>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,4 @@
//
// .right_align_x {
// text-align: center;
// }

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="view_company_form" model="ir.ui.view">
<field name="name">res.company.form.inherit.account</field>
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='vat']" position="before">
<field name="bg_image" widget="image"/>
</xpath>
</field>
</record>
<template id="custom_bg_image" name="Frontend Layout Image" inherit_id="web.frontend_layout">
<xpath expr="//div[@id='wrapwrap']" position="attributes">
<attribute name="t-attf-style">#{"background: transparent url('/dashboard') no-repeat scroll center center / cover;" if response_template == 'web.login' or 'auth_signup.signup' else ''}</attribute>
</xpath>
</template>
</odoo>

View File

@@ -26,3 +26,4 @@ class ResPartner(models.Model):
sf_token = fields.Char(u'Token', default=get_token)
sf_secret_key = fields.Char(u'密钥', default=get_secret)

View File

@@ -45,6 +45,7 @@
<field name="company_id" ref="base.main_company"/>
<field name="single_manufacturing">true</field>
<field name="tracking">serial</field>
<!-- <field name="active" eval="False"/>-->
</record>
<record id="product_embryo_sf_outsource" model="product.product">
@@ -60,6 +61,7 @@
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="company_id" ref="base.main_company"/>
<field name="tracking">serial</field>
<!-- <field name="active" eval="False"/>-->
</record>
<record id="product_embryo_sf_purchase" model="product.product">
<field name="name">胚料采购模板</field>
@@ -74,6 +76,7 @@
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="company_id" ref="base.main_company"/>
<field name="tracking">serial</field>
<!-- <field name="active" eval="False"/>-->
</record>
</data>
</odoo>

57
sf_dlm/data/tt.xml Normal file
View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data noupdate="1">
<record id="product_template_sf" model="product.product">
<field name="name">CNC加工产品模板</field>
<!-- <field name="categ_id" ref="product.product_category_5"/>-->
<field name="invoice_policy">delivery</field>
<field name="detailed_type">product</field>
<field name="purchase_ok">false</field>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="company_id" ref="base.main_company"/>
<field name="active">False</field>
</record>
<record id="product_category_embryo_sf" model="product.category">
<field name="name">胚料</field>
<field name="type">胚料</field>
</record>
<record id="product_embryo_sf_self_machining" model="product.product">
<field name="name">自加工</field>
<!-- <field name="categ_id" ref="product_category_embryo_sf"/>-->
<field name="invoice_policy">delivery</field>
<field name="detailed_type">product</field>
<field name="purchase_ok">false</field>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="company_id" ref="base.main_company"/>
<field name="active">False</field>
</record>
<record id="product_embryo_sf_outsource" model="product.product">
<field name="name">外协</field>
<!-- <field name="categ_id" ref="product_category_embryo_sf"/>-->
<field name="invoice_policy">delivery</field>
<field name="detailed_type">product</field>
<field name="purchase_ok">false</field>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="company_id" ref="base.main_company"/>
<field name="active">False</field>
</record>
<record id="product_embryo_sf_purchase" model="product.product">
<field name="name">采购</field>
<!-- <field name="categ_id" ref="product_category_embryo_sf"/>-->
<field name="invoice_policy">delivery</field>
<field name="detailed_type">product</field>
<field name="purchase_ok">false</field>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="uom_po_id" ref="uom.product_uom_unit"/>
<field name="company_id" ref="base.main_company"/>
<field name="active">False</field>
</record>
</data>
</odoo>

View File

@@ -1,5 +1,3 @@
from. import product_template
from. import product_supplierinfo

View File

@@ -1,11 +0,0 @@
from odoo import models, fields, api
class ResSupplierInfo(models.Model):
_inherit = 'product.supplierinfo'
def _compute_is_subcontractor(self):
for supplier in self:
boms = supplier.product_id.variant_bom_ids
boms |= supplier.product_tmpl_id.bom_ids.filtered(lambda b: not b.product_id or b.product_id in (supplier.product_id or supplier.product_tmpl_id.product_variant_ids))
supplier.is_subcontractor = supplier.partner_id in boms.subcontractor_id

View File

@@ -82,7 +82,7 @@ class ResProductTemplate(models.Model):
item['model_height'] + model_type.embryo_tolerance),
'model_type_id': model_type.id,
'model_processing_panel': 'R',
'model_machining_precision': item['model_machining_precision'],
'model_machining_precision': item['model_machining_precision'],
'model_code': item['barcode'],
'length': item['model_long'],
'width': item['model_width'],
@@ -92,7 +92,7 @@ class ResProductTemplate(models.Model):
'model_name': attachment.name,
'upload_model_file': [(6, 0, [attachment.id])],
# 'single_manufacturing': True,
# 'tracking': 'serial',
'tracking': 'serial',
'list_price': item['price'],
# 'categ_id': self.env.ref('sf_dlm.product_category_finished_sf').id,
'materials_id': self.env['sf.production.materials'].search(
@@ -158,13 +158,14 @@ class ResProductTemplate(models.Model):
'active': True
}
# 外协和采购生成的胚料需要根据材料型号绑定供应商
if route_type == 'subcontract' or route_type == 'purchase':
if route_type == 'subcontract':
no_bom_copy_product_id.purchase_ok = True
no_bom_copy_product_id.seller_ids = [
(0, 0, {'partner_id': supplier.partner_id.id, 'delay': 1.0, 'is_subcontractor': True})]
elif route_type == 'purchase':
no_bom_copy_product_id.purchase_ok = True
no_bom_copy_product_id.seller_ids = [
(0, 0, {'partner_id': supplier.partner_id.id, 'delay': 1.0})]
if route_type == 'subcontract':
partner = self.env['res.partner'].search([('id', '=', supplier.partner_id.id)])
partner.is_subcontractor = True
no_bom_copy_product_id.write(vals)
logging.info('no_bom_copy_product_id-vals:%s' % vals)
# product_id.product_tmpl_id.active = False
@@ -248,6 +249,7 @@ class ResMrpBom(models.Model):
[('materials_model_id', '=', materials_type.id)],
limit=1,
order='sequence asc')
logging.info('get_supplier-vals:%s' % seller_id)
return seller_id
# 匹配bom

View File

@@ -6,13 +6,13 @@
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<!-- <field name="image_1920" position="replace">-->
<!-- <field name="upload_model_file" required="True"-->
<!-- widget='many2many_binary'/>-->
<!-- </field>-->
<!-- <field name="image_1920" position="replace">-->
<!-- <field name="upload_model_file" required="True"-->
<!-- widget='many2many_binary'/>-->
<!-- </field>-->
<field name="invoice_policy" position="after">
<field name="model_file" widget="model_viewer" />
<field name="model_file" required="True" widget="model_viewer"/>
<field name="materials_id" string="材料"/>
<field name="materials_type_id" string="型号"
domain="[('materials_id', '=', materials_id)]"/>
@@ -36,31 +36,18 @@
<xpath expr="//page[last()]" position="after">
<page string="加工参数">
<group>
<group string="模型">
<label for="model_long" string="尺寸[mm]"/>
<div class="o_address_format">
<label for="model_long" string=""/>
<field name="model_long" class="o_address_zip"/>
<!-- <span>&amp;nbsp;</span>-->
<label for="model_width" string="宽"/>
<field name="model_width" class="o_address_zip"/>
<!-- <span>&amp;nbsp;</span>-->
<label for="model_height" string="高"/>
<field name="model_height" class="o_address_zip"/>
</div>
<!-- <field name="model_long" string="长[mm]"/>-->
<!-- <field name="model_width" string="宽[mm]"/>-->
<!-- <field name="model_height" string="高[mm]"/>-->
<field name="model_volume" string="体积[mm³]"/>
<field name="model_type_id" string="模型类型"/>
<field name="model_processing_panel" placeholder="例如R,U" string="加工面板"/>
<field name="model_machining_precision"/>
<field name="model_surface_process_id" string="表面工艺"/>
<field name="model_process_parameters_id" string="工艺参数"
domain="[('processing_order_ids', '=', model_surface_process_id)]"/>
<field name="model_remark" string="备注说明"/>
</group>
<group string="模型">
<field name="model_long" string="长[mm]"/>
<field name="model_width" string="[mm]"/>
<field name="model_height" string="高[mm]"/>
<field name="model_volume" string="体积[m³]"/>
<field name="model_type_id" string="模型类型"/>
<field name="model_processing_panel" placeholder="例如R,U" string="加工面板"/>
<field name="model_machining_precision"/>
<field name="model_surface_process_id" string="表面工艺"/>
<field name="model_process_parameters_id" string="工艺参数"
domain="[('processing_order_ids', '=', model_surface_process_id)]"/>
<field name="model_remark" string="备注说明"/>
</group>
</page>
</xpath>

View File

@@ -13,24 +13,6 @@ class ResWorkcenter(models.Model):
'maintenance.equipment', 'workcenter_id', string="Maintenance Equipment",
check_company=True)
@api.onchange('machine_tool_id')
def update_machine_tool_is_binding(self):
machine_tool = self.env["sf.machine_tool"].search([('is_binding', '=', True)])
if machine_tool:
for item in machine_tool:
workcenter_machine_tool = self.env["mrp.workcenter"].search([('machine_tool_id', '=', item.id)])
if workcenter_machine_tool:
if self.machine_tool_id.id:
if workcenter_machine_tool.id != self.machine_tool_id.id:
self.machine_tool_id.is_binding = True
else:
self.machine_tool_id.is_binding = True
else:
self.machine_tool_id.is_binding = True
item.is_binding = False
else:
self.machine_tool_id.is_binding = True
def action_work_order(self):
if not self.env.context.get('desktop_list_view', False):
action = self.env["ir.actions.actions"]._for_xml_id("sf_manufacturing.mrp_workorder_action_tablet")

View File

@@ -24,19 +24,19 @@
</field>
</record>
<record id="mrp_workcenter_view_kanban_inherit_workorder" model="ir.ui.view">
<field name="name">mrp.workcenter.view.kanban.inherit.mrp.workorder</field>
<field name="model">mrp.workcenter</field>
<field name="inherit_id" ref="mrp.mrp_workcenter_kanban"/>
<field name="arch" type="xml">
<!-- Desktop view -->
<xpath expr="//div[@name='o_wo']" position="inside">
<button class="btn btn-secondary fa fa-desktop" name="action_work_order" type="object"
context="{'search_default_ready': 1, 'search_default_progress': 1, 'search_default_pending': 1, 'desktop_list_view': 1, 'search_default_workcenter_id': active_id}"
title="Work orders" aria-label="Work orders"/>
</xpath>
</field>
</record>
<!-- <record id="mrp_workcenter_view_kanban_inherit_workorder" model="ir.ui.view">-->
<!-- <field name="name">mrp.workcenter.view.kanban.inherit.mrp.workorder</field>-->
<!-- <field name="model">mrp.workcenter</field>-->
<!-- <field name="inherit_id" ref="mrp.mrp_workcenter_kanban"/>-->
<!-- <field name="arch" type="xml">-->
<!-- &lt;!&ndash; Desktop view &ndash;&gt;-->
<!-- <xpath expr="//div[@name='o_wo']" position="inside">-->
<!-- <button class="btn btn-secondary fa fa-desktop" name="action_work_order" type="object"-->
<!-- context="{'search_default_ready': 1, 'search_default_progress': 1, 'search_default_pending': 1, 'desktop_list_view': 1, 'search_default_workcenter_id': active_id}"-->
<!-- title="Work orders" aria-label="Work orders"/>-->
<!-- </xpath>-->
<!-- </field>-->
<!-- </record>-->
<!-- override to change the no content image -->
<record id="mrp.action_work_orders" model="ir.actions.act_window">
@@ -56,10 +56,10 @@
</field>
</record>
<record id="mrp_workcenter_kanban_action1" model="ir.actions.act_window">
<field name="name">Work Centers Overview</field>
<field name="name">工作中心看板</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mrp.workcenter</field>
<field name="view_mode">kanban,form</field>
<field name="view_mode">kanban,form,tree</field>
<field name="view_id" ref="mrp.mrp_workcenter_kanban"/>
<field name="search_view_id" ref="mrp.view_mrp_workcenter_search"/>
<field name="domain">[('users_ids','in',uid)]</field>
@@ -107,7 +107,7 @@
</xpath>
<xpath expr="//field[@name='alternative_workcenter_ids']" position="after">
<field name="machine_tool_id" domain="[('is_binding','=',False)]"/>
<field name="machine_tool_id"/>
</xpath>
</field>
</record>

View File

@@ -12,7 +12,7 @@
<field name="name" position="after">
<field name="processing_panel"/>
</field>
<field name="state" position="after">
<field name="state" position="after">
<field name="work_state"/>
</field>
<xpath expr="//button[@name='button_start']" position="attributes">
@@ -91,9 +91,21 @@
<field name="model">mrp.workorder</field>
<field name="inherit_id" ref="mrp.mrp_production_workorder_form_view_inherit"/>
<field name="arch" type="xml">
<xpath expr="field[@name='is_user_working']" position="before">
<sheet position="before">
<field name='user_permissions' invisible="1"/>
</xpath>
<button name="button_start" type="object" string="开始" class="btn-success"
attrs="{'invisible': ['|', '|', '|','|', ('production_state','in', ('draft', 'done',
'cancel')), ('working_state', '=', 'blocked'), ('state', 'in', ('done', 'cancel')),
('is_user_working', '!=', False),('user_permissions','=',False)]}"/>
<button name="button_pending" type="object" string="暂停" class="btn-warning"
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"/>
<button name="button_finish" type="object" string="完成" class="btn-success"
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'), ('is_user_working', '=', False)]}"/>
<button name="%(mrp.act_mrp_block_workcenter_wo)d" type="action" string="停工" context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
attrs="{'invisible': ['|', '|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '=', 'blocked'),('user_permissions','=',False)]}"/>
<button name="button_unblock" type="object" string="Unblock" context="{'default_workcenter_id': workcenter_id}" class="btn-danger"
attrs="{'invisible': ['|', ('production_state', 'in', ('draft', 'done', 'cancel')), ('working_state', '!=', 'blocked')]}"/>
</sheet>
<xpath expr="//page[last()]" position="after">

View File

@@ -27,8 +27,7 @@ class Sf_Mrs_Connect(http.Controller):
# 查询状态为进行中且类型为获取CNC加工程序的工单
cnc_workorder = request.env['mrp.workorder'].with_user(
request.env.ref("base.user_admin")).search([('production_id.name', '=', ret['production_order_no']),
('routing_type', '=', '获取CNC加工程序'),
('state', '=', 'progress')])
('routing_type', '=', '获取CNC加工程序')])
if cnc_workorder:
# 拉取所有加工面的程序文件
# i = 1

View File

@@ -111,7 +111,7 @@ class sfMaterialModel(models.Model):
brand.active = item['active'],
brand.mf_materia_post = item['mf_materia_post'],
brand.materials_id = self.env['sf.production.materials'].search(
[("materials_no", '=', item['materials_id.materials_no'])]).id,
[("materials_no", '=', item['materials_id.materials_no'])]).id,
brand.need_h = item['need_h'],
brand.density = item['density']
else:
@@ -158,9 +158,9 @@ class sfMaterialModel(models.Model):
"need_h": item['need_h'],
"mf_materia_post": item['mf_materia_post'],
"density": item['density'],
# "tag_ids": item['tag_ids']
# "tag_ids": item['tag_ids']
})
})
else:
raise ValidationError("认证未通过")
@@ -392,7 +392,7 @@ class MachineControlSystem(models.Model):
brand.id = item['id'],
brand.name = item['name'],
brand.code = item['code'],
brand.brand_id = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
brand.brand_id=self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
brand.active = item['active']
else:
self.env['sf.machine.control_system'].create({
@@ -500,9 +500,12 @@ class MachineBrand(models.Model):
"id": item['id'],
"name": item['name'],
"code": item['code'],
"image_brand": '' if not item['image_brand'] else base64.b64encode(item.image_brand),
# "image_brand": item['image_brand'],
"active": item['active'],
"tag_ids": self.env['sf.machine.brand.tags'].search(
[("name", 'in', item['tag_ids'])]).ids
[("name", 'in', item['tag_ids'])]).ids
})
else:
raise ValidationError("认证未通过")
@@ -514,6 +517,8 @@ class MachineTool(models.Model):
url = '/api/machine_tool/list'
crea_url = '/api/machine_tool/create'
# 定时同步机床
def sync_machine_tool(self):
sf_sync_config = self.env['res.config.settings'].get_values()
@@ -652,8 +657,7 @@ class MachineToolType(models.Model):
brand.number_of_knife_library = item['number_of_knife_library'],
brand.rotate_speed = item['rotate_speed'],
brand.number_of_axles = item['number_of_axles'],
brand.control_system_id = self.env['sf.machine.control_system'].search(
[('code', '=', item['control_system_id'])]).id,
brand.control_system_id = self.env['sf.machine.control_system'].search([('code', '=', item['control_system_id'])]).id,
brand.x_axis = item['x_axis'],
brand.y_axis = item['y_axis'],
@@ -662,9 +666,8 @@ class MachineToolType(models.Model):
brand.c_axis = item['c_axis'],
brand.active = item['active'],
brand.remark = item['remark'],
brand.brand_id = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
brand.machine_tool_id = self.env['sf.machine_tool'].search(
[('code', '=', item['machine_tool_id'])]).id
brand.brand_id=self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
brand.machine_tool_id = self.env['sf.machine_tool'].search([('code', '=', item['machine_tool_id'])]).id
else:
self.env['sf.machine_tool.type'].create({
@@ -674,8 +677,7 @@ class MachineToolType(models.Model):
"number_of_knife_library": item['number_of_knife_library'],
"rotate_speed": item['rotate_speed'],
'machine_tool_id': self.env['sf.machine_tool'].search(
[('code', '=', item['machine_tool_id'])]).id,
'machine_tool_id' : self.env['sf.machine_tool'].search([('code', '=', item['machine_tool_id'])]).id,
"number_of_axles": item['number_of_axles'],
"x_axis": item['x_axis'],
"y_axis": item['y_axis'],
@@ -684,8 +686,7 @@ class MachineToolType(models.Model):
"c_axis": item['c_axis'],
"remark": item['remark'],
"precision": item['precision'],
'control_system_id': self.env['sf.machine.control_system'].search(
[('code', '=', item['control_system_id'])]).id,
'control_system_id' : self.env['sf.machine.control_system'].search([('code', '=', item['control_system_id'])]).id,
"active": item['active'],
'brand_id': self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
@@ -715,8 +716,7 @@ class MachineToolType(models.Model):
"code": item['code'],
"number_of_knife_library": item['number_of_knife_library'],
"rotate_speed": item['rotate_speed'],
'machine_tool_id': self.env['sf.machine_tool'].search(
[('code', '=', item['machine_tool_id'])]).id,
'machine_tool_id' : self.env['sf.machine_tool'].search([('code', '=', item['machine_tool_id'])]).id,
"number_of_axles": item['number_of_axles'],
"x_axis": item['x_axis'],
"y_axis": item['y_axis'],
@@ -725,8 +725,7 @@ class MachineToolType(models.Model):
"c_axis": item['c_axis'],
"remark": item['remark'],
"precision": item['precision'],
'control_system_id': self.env['sf.machine.control_system'].search(
[('code', '=', item['control_system_id'])]).id,
'control_system_id' : self.env['sf.machine.control_system'].search([('code', '=', item['control_system_id'])]).id,
"active": item['active'],
'brand_id': self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
@@ -837,8 +836,7 @@ class CuttingToolType(models.Model):
brand.tool_length = item['tool_length'],
brand.blade_number = item['blade_number']
brand.brand_id = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
brand.category_id = self.env['sf.cutting_tool.category'].search(
[('code', '=', item['category_id'])]).id
brand.category_id = self.env['sf.cutting_tool.category'].search([('code', '=', item['category_id'])]).id
else:
self.env['sf.cutting_tool.type'].create({
"id": item['id'],
@@ -854,8 +852,7 @@ class CuttingToolType(models.Model):
"tool_length": item['tool_length'],
"blade_number": item['blade_number'],
'brand_id': self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
"category_id": self.env['sf.cutting_tool.category'].search(
[('code', '=', item['category_id'])]).id,
"category_id": self.env['sf.cutting_tool.category'].search([('code', '=', item['category_id'])]).id,
})
else:
raise ValidationError("认证未通过")
@@ -890,13 +887,13 @@ class CuttingToolType(models.Model):
"tool_length": item['tool_length'],
"blade_number": item['blade_number'],
'brand_id': self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]).id,
"category_id": self.env['sf.cutting_tool.category'].search(
[('code', '=', item['category_id'])]).id,
"category_id": self.env['sf.cutting_tool.category'].search([('code', '=', item['category_id'])]).id,
})
else:
raise ValidationError("认证未通过")
class sfProcessingOrder(models.Model):
_inherit = 'sf.processing.order'
_description = '工序'
@@ -951,3 +948,4 @@ class sfProcessingOrder(models.Model):
})
else:
raise ValidationError("认证未通过")

View File

@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from .hooks import test_pre_init_hook, test_post_init_hook
from . import wizard

View File

@@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
"name": "Vista Backend Theme V16",
"description": """Minimalist and elegant backend theme for Odoo 16, Backend Theme, Theme""",
"summary": "Vista Backend Theme V16 is an attractive theme for backend",
"category": "Themes/Backend",
"version": "16.0.1.0.0",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
"depends": ['base', 'web', 'mail'],
"data": [
'security/ir.model.access.csv',
'views/icons.xml',
'views/layout.xml',
'views/theme.xml',
'views/assets.xml',
'data/theme_data.xml',
],
'assets': {
'web.assets_backend': {
'/vista_backend_theme/static/src/scss/theme.scss',
'/vista_backend_theme/static/src/js/systray.js',
'/vista_backend_theme/static/src/js/load.js',
'/vista_backend_theme/static/src/js/chrome/sidebar_menu.js',
'/vista_backend_theme/static/src/xml/systray.xml',
'/vista_backend_theme/static/src/xml/top_bar.xml',
},
'web.assets_frontend': {
'/vista_backend_theme/static/src/scss/login.scss',
'/vista_backend_theme/static/src/scss/login.scss',
},
},
'images': [
'static/description/banner.png',
'static/description/theme_screenshot.png',
],
'license': 'LGPL-3',
'pre_init_hook': 'test_pre_init_hook',
'post_init_hook': 'test_post_init_hook',
'installable': True,
'application': False,
'auto_install': False,
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="theme_data_stored" model="theme.data.stored">
<field name="name">default</field>
</record>
</data>
</odoo>

View File

@@ -0,0 +1,163 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
import base64
from odoo import api, SUPERUSER_ID
from odoo.modules import get_module_resource
def test_pre_init_hook(cr):
"""pre init hook"""
env = api.Environment(cr, SUPERUSER_ID, {})
menu_item = env['ir.ui.menu'].search([('parent_id', '=', False)])
for menu in menu_item:
if menu.name == 'Contacts':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'contacts.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Link Tracker':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'link-tracker.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Dashboards':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'dashboards.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Sales':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'sales.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Invoicing':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'accounting.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Inventory':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'inventory.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Purchase':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'purchase.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Calendar':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'calendar.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'CRM':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'crm.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Note':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'note.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Website':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'website.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Point of Sale':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'pos.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Manufacturing':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'manufacturing.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Repairs':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'repairs.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Email Marketing':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'email-marketing.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'SMS Marketing':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'sms-marketing.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Project':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'project.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Surveys':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'surveys.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Employees':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'employee.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Recruitment':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'recruitment.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Attendances':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'attendances.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Time Off':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'timeoff.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Expenses':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'expenses.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Maintenance':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'maintenance.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Live Chat':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'live-chat.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Lunch':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'lunch.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Fleet':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'fleet.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Timesheets':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'timesheets.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Events':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'events.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'eLearning':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'elearning.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
if menu.name == 'Members':
img_path = get_module_resource(
'vista_backend_theme', 'static', 'src', 'img', 'icons', 'members.png')
menu.write({'web_icon_data': base64.b64encode(open(img_path, "rb").read())})
def test_post_init_hook(cr, registry):
"""post init hook"""
env = api.Environment(cr, SUPERUSER_ID, {})

View File

@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_theme_data,access.theme.data,model_theme_data,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_theme_data access.theme.data model_theme_data 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

View File

@@ -0,0 +1,444 @@
<!-- HERO SECTION -->
<div class="contianer">
<div class="row position-relative"
style="background-color: #2f3542 !important; height: 400px; margin-bottom: 6rem; border-radius: 1rem !important;">
<div class="col-lg-12 d-flex flex-column justify-content-start align-items-center">
<h1 class="display-1 text-white" style="padding-top: 5rem;">Vista Backend Theme V16</h1>
<p class="text-light small font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase;">Multi-Color
&amp; Multi-Design Backend Theme for
Odoo 16</p>
</div>
<img src="./images/hero.gif" class="img img-fluid"
style="height: auto; width: 525px; top: 45%; left: 0; right: 0; margin-left: auto; margin-right: auto;"
height="auto" width="525px">
</div>
</div>
<!-- END OF HERO SECTION -->
<!-- SHORT DESCRIPTION -->
<div class="container">
<div class="row my-4">
<div class="col-lg-12 d-flex justify-content-center align-items-center">
<h6 class="text-muted text-center w-50" style="line-height: 22px;">The app enables a user friendly backend
theme for Odoo 16.0 community edition.</h6>
</div>
</div>
</div>
<!-- END OF SHORT DESCRIPTION -->
<!-- FEATURE ICONS -->
<div class="container w-50" style="margin: 3rem auto;">
<div class="row">
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
<div
style="height: 100px; width: 100px; border: 8px solid #eaebec; border-radius: 50%; background-color: #e0e1e3; box-shadow: 0px 0px 0px 8px #f3f3f4;"
class="d-flex justify-content-center align-items-center">
<img height="60px" src="./images/icons/design.png">
</div>
<h6 class="my-4 text-center">Carefully Crafted</h6>
</div>
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
<div
style="height: 100px; width: 100px; border: 8px solid #eaebec; border-radius: 50%; background-color: #e0e1e3; box-shadow: 0px 0px 0px 8px #f3f3f4;"
class="d-flex justify-content-center align-items-center">
<img height="60px" src="./images/icons/responsive.png">
</div>
<h6 class="my-4 text-center">Responsive Design</h6>
</div>
<div class="col-lg-4 my-2 d-flex flex-column justify-content-center align-items-center">
<div
style="height: 100px; width: 100px; border: 8px solid #eaebec; border-radius: 50%; background-color: #e0e1e3; box-shadow: 0px 0px 0px 8px #f3f3f4;"
class="d-flex justify-content-center align-items-center">
<img height="60px" src="./images/icons/quality.png">
</div>
<h6 class="my-4 text-center">Quality Checked</h6>
</div>
</div>
</div>
<!-- END OF FEATURE ICONS -->
<!-- ONE COLUMN SECTION-->
<div class="container" style="margin: 3rem auto;">
<div class="row my-4">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 class="text-center mt-3 display-4 text-weight-bold">Kanban View</h2>
<p class="text-center lead text-muted mb-4">Kanban view with a clean layout and modified font.</p>
<img height="600px" width="auto" src="./images/kanban.png" class="img img-fluid deep-4 rounded">
</div>
</div>
</div>
<!-- END OF ONE COLUMN SECTION-->
<!-- TWO COLUMN SECTION-->
<div class="container" style="margin: 6rem auto;">
<div class="row my-4">
<div class="col-lg-6 d-flex flex-column justify-content-center align-items-start">
<span class="font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase; color: #444955">Custom
Login</span>
<h2 class="mt-3">Minimal, Colorful Login Screen</h2>
<p class="lead text-muted mb-4">Customized minimal and colorful login screen.</p>
<img src="./images/login.png" class="img img-fluid deep-2 rounded">
</div>
<div class="col-lg-6 d-flex flex-column justify-content-center align-items-start">
<span class="font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase; color: #444955">Colored UI
Elements</span>
<h2 class="mt-3">Discuss</h2>
<p class="lead text-muted mb-4">Discuss page with a different style.</p>
<img src="./images/discuss.png" class="img img-fluid deep-2 rounded">
</div>
</div>
</div>
<!-- END OF TWO COLUMN SECTION-->
<!-- RESPONSIVE SECTION-->
<div class="container" style="margin: 6rem auto;">
<div class="row my-4">
<div class="col-lg-5 d-flex flex-column justify-content-center align-items-start">
<img src="./images/responsive.png" class="img img-fluid deep-2 rounded">
</div>
<div class="col-lg-7 d-flex flex-column justify-content-center">
<span class="font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase; color: #444955">Responsive
Layout</span>
<h2 class="mt-3">Truly Responsive</h2>
<p class="lead text-muted mb-4">Fully responsive layout which enables to view and manage everything from the
comfort of your mobile device.</p>
</div>
</div>
</div>
<!-- END OF RESPONSIVE SECTION-->
<!-- RESPONSIVE SECTION-->
<div class="container" style="margin: 6rem auto;">
<div class="row my-4">
<div class="col-lg-7 d-flex flex-column justify-content-center">
<span class="font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase; color: #444955">Responsive
Layout</span>
<h2 class="mt-3">Modified App Drawer</h2>
<p class="lead text-muted mb-4">Modified app drawer which helps to navigate through different applications.</p>
</div>
<div class="col-lg-5 d-flex flex-column justify-content-center align-items-start">
<img src="./images/app_drawer.png" class="img img-fluid deep-2 rounded">
</div>
</div>
</div>
<!-- END OF RESPONSIVE SECTION-->
<!-- RESPONSIVE SECTION-->
<div class="container" style="margin: 6rem auto;">
<div class="row my-4">
<div class="col-lg-5 d-flex flex-column justify-content-center align-items-start">
<img src="./images/custom_date.png" class="img img-fluid deep-2 rounded">
</div>
<div class="col-lg-7 d-flex flex-column justify-content-center">
<span class="font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase; color: #444955">Colored UI
Elements</span>
<h2 class="mt-3">Custom Date Picker</h2>
<p class="lead text-muted mb-4">Customized date picker</p>
</div>
</div>
</div>
</div>
<!-- END OF RESPONSIVE SECTION-->
<!-- TWO COLUMN SECTION-->
<div class="container" style="margin: 6rem auto;">
<div class="row my-4">
<div class="col-lg-6 d-flex flex-column justify-content-center align-items-start">
<span class="font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase; color: #444955">Colored UI
Elements</span>
<h2 class="mt-3">Tree View</h2>
<p class="lead text-muted mb-4">Tree view with a clean layout and modified font.</p>
<img src="./images/tree_view.png" class="img img-fluid deep-2 rounded">
</div>
<div class="col-lg-6 d-flex flex-column justify-content-center align-items-start">
<span class="font-weight-bold" style="letter-spacing: 2px; text-transform: uppercase; color: #444955">Colored UI
Elements</span>
<h2 class="mt-3">Form View</h2>
<p class="lead text-muted mb-4">Form view with a clean layout and modified font.</p>
<img src="./images/form_view.png" class="img img-fluid deep-2 rounded">
</div>
</div>
</div>
<!-- END OF TWO COLUMN SECTION-->
<!-- OUR SERVICES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 class="text-center"
style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;">
Our Services</h2>
<p class="text-center"
style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;">
We provide following services</p>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">Odoo
Licensing Consultancy</h6>
</div>
</div>
</section>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 class="text-center"
style="font-family: Montserrat, 'sans-serif'; color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;">
Our Industries</h2>
<p class="text-center"
style="font-family: Montserrat, 'sans-serif'; color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;">
Our industry specifics and process segments to solve your complex business barriers.</p>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-size: 0.9rem !important;">Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-size: 0.9rem !important;">Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-size: 0.9rem !important;">A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-size: 0.9rem !important;">Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-size: 0.9rem !important;">Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-size: 0.9rem !important;">Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-size: 0.9rem !important;">Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-size: 0.9rem !important;">An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</section>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container" style="margin: 5rem auto 2rem;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 class="text-center"
style="color: #000 !important; font-weight: 800 !important; font-size: 2rem !important; width: 80%;">
Need Help?</h2>
<p class="text-center"
style="color: #1a1a1a !important; font-weight: 300 !important; font-size: 1.3rem !important;">
Do you have any queries regarding our products &amp; services? Let us know.</p>
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center" style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-4">
<a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
</div>
<div class="col-lg-4">
<a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
class="fa fa-whatsapp mr-2"></i>WhatsApp</a>
</div>
<div class="col-lg-4">
<a href="skype:cybrosystechnologies?chat" target="_blank" class="btn btn-block deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>cybrosystechnologies</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" />
</div>
<!-- End of Logo -->
<div class="col-lg-12">
<hr
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
<!-- END OF FOOTER -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Some files were not shown because too many files have changed in this diff Show More