@ -0,0 +1,47 @@ |
|||||
|
.. image:: https://img.shields.io/badge/licence-AGPL--1-blue.svg |
||||
|
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html |
||||
|
:alt: License: AGPL-3 |
||||
|
|
||||
|
Barcode scanning support for sale and Purchase v13 |
||||
|
================================================== |
||||
|
|
||||
|
This module will help you to use barcode scanner in sales and purchase. |
||||
|
|
||||
|
Depends |
||||
|
======= |
||||
|
[sale_management] addon Odoo |
||||
|
[purchase] addon Odoo |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
* No additional configurations needed |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
* Developer: Sreejith P @ cybrosys, Contact: odoo@cybrosys.com |
||||
|
Version 13: Vaishnavi B @cybrosys,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,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sreejith P (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import models |
@ -0,0 +1,43 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sreejith P (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
{ |
||||
|
'name': 'Barcode scanning support for sale and Purchase', |
||||
|
'version': '13.0.1.0.0', |
||||
|
'category': 'Sales', |
||||
|
'summary': 'This module will help you to use barcode scanner in sales and purchase.', |
||||
|
'author': 'Cybrosys Techno solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'website': 'https://www.cybrosys.com', |
||||
|
'depends': ['purchase', 'sale_management'], |
||||
|
'demo': [], |
||||
|
'data': [ |
||||
|
'views/sale_order_line.xml', |
||||
|
'views/purchase_order_line.xml', |
||||
|
], |
||||
|
'installable': True, |
||||
|
'application': False, |
||||
|
'auto_install': False, |
||||
|
'images': ['static/description/banner.jpg'], |
||||
|
'qweb': [], |
||||
|
'license': 'AGPL-3', |
||||
|
} |
@ -0,0 +1,6 @@ |
|||||
|
## Module <barcode_scanning_sale_purchase> |
||||
|
|
||||
|
#### 28.10.2019 |
||||
|
#### Version 13.0.1.0.0 |
||||
|
##### ADD |
||||
|
- Migrated to version 13 |
@ -0,0 +1,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Sreejith P (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import sale_order |
||||
|
from . import purchase_order |
@ -0,0 +1,16 @@ |
|||||
|
from odoo import api, models, fields |
||||
|
|
||||
|
|
||||
|
class PurchaseOrderLines(models.Model): |
||||
|
_inherit = "purchase.order.line" |
||||
|
|
||||
|
barcode_scan = fields.Char(string='Product Barcode', help="Here you can provide the barcode for the product") |
||||
|
|
||||
|
@api.onchange('barcode_scan') |
||||
|
def _onchange_barcode_scan(self): |
||||
|
product_rec = self.env['product.product'] |
||||
|
if self.barcode_scan: |
||||
|
product = product_rec.search([('barcode', '=', self.barcode_scan)]) |
||||
|
self.product_id = product.id |
||||
|
|
||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
@ -0,0 +1,16 @@ |
|||||
|
from odoo import api, models, fields |
||||
|
|
||||
|
|
||||
|
class SaleOrderLines(models.Model): |
||||
|
_inherit = 'sale.order.line' |
||||
|
|
||||
|
barcode_scan = fields.Char(string='Product Barcode', help="Here you can provide the barcode for the product") |
||||
|
|
||||
|
@api.onchange('barcode_scan') |
||||
|
def _onchange_barcode_scan(self): |
||||
|
product_rec = self.env['product.product'] |
||||
|
if self.barcode_scan: |
||||
|
product = product_rec.search([('barcode', '=', self.barcode_scan)]) |
||||
|
self.product_id = product.id |
||||
|
|
||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,305 @@ |
|||||
|
|
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png); background-repeat:no-repeat; background-size:cover;padding: 13% 0% 25% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;"> |
||||
|
Barcode scanning support for sale and Purchase |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;"> |
||||
|
This module will help you to use barcode scanner in sales and purchase module. |
||||
|
</h3> |
||||
|
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;"> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com">Cybrosys Technologies</a> |
||||
|
</h5> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 3% 0% 3% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Overview |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
A module that can use in sales and purchase for barcode scanning. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 30% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Features |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Use barcode in Sales order |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Use barcode in Purchase order |
||||
|
</h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 3% 0% 0% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Screenshots |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Product Form |
||||
|
</h3> |
||||
|
<p> |
||||
|
Provide a barcode for the product.<br> |
||||
|
</p> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="product_barcode.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Sale Order |
||||
|
</h3> |
||||
|
<p> |
||||
|
Just click on the barcode field and scan the product now the item is added to the order line.<br> |
||||
|
</p> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="sale_order.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
>Purchase Order |
||||
|
</h3> |
||||
|
<p> |
||||
|
Just click on the barcode field and scan the product now the item is added to the order line.<br> |
||||
|
</p> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="purchase_order.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Service |
||||
|
</h2> |
||||
|
<div style="display:flex;padding-top: 20px;justify-content: space-between;"> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
Odoo <br/>Customization |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
Odoo <br/>Implementation |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
Odoo <br/>Integration |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
Odoo <br/>Support |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
Hire <br/>Odoo Developer |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 3% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Industries |
||||
|
</h2> |
||||
|
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
Trading |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easily procure and sell your products. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
Manufacturing |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Plan, track and schedule your operations. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
Restaurant |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Run your bar or restaurant methodical. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
POS |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easy configuring and convivial selling. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> |
||||
|
E-commerce & Website |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Mobile friendly, awe-inspiring product pages. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
Hotel Management |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
An all-inclusive hotel management application. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
Education |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
A Collaborative platform for educational management. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
Service Management |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Keep track of services and invoice accordingly. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;"> |
||||
|
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;"> |
||||
|
<div> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 14px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com"><i class="fa fa-envelope"></i> Email us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 14px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 14px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/odoo-customization-and-installation/"><i class="fa fa-check-square"></i> Request Customization </a> |
||||
|
</div> |
||||
|
<br> |
||||
|
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
||||
|
<div> |
||||
|
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
After Width: | Height: | Size: 239 KiB |
After Width: | Height: | Size: 258 KiB |
After Width: | Height: | Size: 265 KiB |
@ -0,0 +1,15 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
<record id="purchase_order_view_inherit_barcode1" model="ir.ui.view"> |
||||
|
<field name="name">purchase.order.form.inherit</field> |
||||
|
<field name="model">purchase.order</field> |
||||
|
<field name="inherit_id" ref="purchase.purchase_order_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='order_line']/tree/field[@name='product_id']" position="before"> |
||||
|
<field name ="barcode_scan"/> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,15 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
<record id="sale_order_view_inherit_barcode1" model="ir.ui.view"> |
||||
|
<field name="name">sale.order.form.inherit</field> |
||||
|
<field name="model">sale.order</field> |
||||
|
<field name="inherit_id" ref="sale.view_order_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='order_line']/tree/field[@name='product_id']" position="before"> |
||||
|
<field name ="barcode_scan"/> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,39 @@ |
|||||
|
Laundry Management v13 |
||||
|
====================== |
||||
|
This module helps you to manage laundry service. |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
* No additional configurations needed |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
* Developers: Jesni Banu@cybrosys |
||||
|
Nilmar Shereef@cybrosys |
||||
|
Version 13: Nimisha Murali@cybrosys |
||||
|
|
||||
|
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,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import models |
||||
|
from . import reports |
@ -0,0 +1,49 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
{ |
||||
|
'name': 'Laundry Management', |
||||
|
'version': '13.0.1.0.0', |
||||
|
'summary': """Complete Laundry Service Management""", |
||||
|
'description': 'This module is very useful to manage all process of laundry service', |
||||
|
"category": "Industries", |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'website': "https://www.cybrosys.com", |
||||
|
'depends': ['base', 'mail', 'sale', 'account'], |
||||
|
'data': [ |
||||
|
'data/data.xml', |
||||
|
'security/laundry_security.xml', |
||||
|
'security/ir.model.access.csv', |
||||
|
'views/laundry_view.xml', |
||||
|
'views/washing_view.xml', |
||||
|
'views/config_view.xml', |
||||
|
'views/laundry_report.xml', |
||||
|
'views/laundry_label.xml', |
||||
|
], |
||||
|
'images': ['static/description/banner.jpg'], |
||||
|
'license': 'AGPL-3', |
||||
|
'demo': [], |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
'application': False, |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<record id="laundry_service" model="product.product"> |
||||
|
<field name="name">Laundry Service</field> |
||||
|
<field name="type">service</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,9 @@ |
|||||
|
## Module <laundry_management> |
||||
|
|
||||
|
#### 28.10.2019 |
||||
|
#### Version 13.0.1.0.0 |
||||
|
#### ADD |
||||
|
Initial commit for Laundry Management |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import laundry |
@ -0,0 +1,438 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
import time |
||||
|
from datetime import datetime |
||||
|
from odoo import models, fields, api, _ |
||||
|
from odoo.exceptions import UserError |
||||
|
|
||||
|
|
||||
|
class LaundryManagement(models.Model): |
||||
|
_name = 'laundry.order' |
||||
|
_inherit = 'mail.thread' |
||||
|
_description = "Laundry Order" |
||||
|
_order = 'order_date desc, id desc' |
||||
|
|
||||
|
@api.model |
||||
|
def create(self, vals): |
||||
|
vals['name'] = self.env['ir.sequence'].next_by_code('laundry.order') |
||||
|
return super(LaundryManagement, self).create(vals) |
||||
|
|
||||
|
@api.depends('order_lines') |
||||
|
def get_total(self): |
||||
|
total = 0 |
||||
|
for obj in self: |
||||
|
for each in obj.order_lines: |
||||
|
total += each.amount |
||||
|
obj.total_amount = total |
||||
|
|
||||
|
def confirm_order(self): |
||||
|
self.state = 'order' |
||||
|
sale_obj = self.env['sale.order'].create({'partner_id': self.partner_id.id, |
||||
|
'partner_invoice_id': self.partner_invoice_id.id, |
||||
|
'partner_shipping_id': self.partner_shipping_id.id}) |
||||
|
self.sale_obj = sale_obj |
||||
|
product_id = self.env.ref('laundry_management.laundry_service') |
||||
|
self.env['sale.order.line'].create({'product_id': product_id.id, |
||||
|
'name': 'Laundry Service', |
||||
|
'price_unit': self.total_amount, |
||||
|
'order_id': sale_obj.id |
||||
|
}) |
||||
|
for each in self: |
||||
|
for obj in each.order_lines: |
||||
|
self.env['washing.washing'].create({'name': obj.product_id.name + '-Washing', |
||||
|
'user_id': obj.washing_type.assigned_person.id, |
||||
|
'description': obj.description, |
||||
|
'laundry_obj': obj.id, |
||||
|
'state': 'draft', |
||||
|
'washing_date': datetime.now().strftime('%Y-%m-%d %H:%M:%S')}) |
||||
|
|
||||
|
def create_invoice(self): |
||||
|
if self.sale_obj.state in ['draft', 'sent']: |
||||
|
self.sale_obj.action_confirm() |
||||
|
self.invoice_status = self.sale_obj.invoice_status |
||||
|
return { |
||||
|
'name': 'Create Invoice', |
||||
|
'view_type': 'form', |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'sale.advance.payment.inv', |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'context': {'laundry_sale_obj': self.sale_obj.id}, |
||||
|
'target': 'new' |
||||
|
} |
||||
|
|
||||
|
def return_dress(self): |
||||
|
self.state = 'return' |
||||
|
|
||||
|
|
||||
|
def cancel_order(self): |
||||
|
self.state = 'cancel' |
||||
|
|
||||
|
|
||||
|
def _invoice_count(self): |
||||
|
wrk_ordr_ids = self.env['account.move'].search([('invoice_origin', '=', self.sale_obj.name)]) |
||||
|
self.invoice_count = len(wrk_ordr_ids) |
||||
|
|
||||
|
|
||||
|
def _work_count(self): |
||||
|
wrk_ordr_ids = self.env['washing.washing'].search([('laundry_obj.laundry_obj.id', '=', self.id)]) |
||||
|
self.work_count = len(wrk_ordr_ids) |
||||
|
|
||||
|
|
||||
|
def action_view_laundry_works(self): |
||||
|
|
||||
|
work_obj = self.env['washing.washing'].search([('laundry_obj.laundry_obj.id', '=', self.id)]) |
||||
|
print(work_obj) |
||||
|
work_ids = [] |
||||
|
for each in work_obj: |
||||
|
work_ids.append(each.id) |
||||
|
view_id = self.env.ref('laundry_management.washing_form_view').id |
||||
|
if work_ids: |
||||
|
if len(work_ids) <= 1: |
||||
|
value = { |
||||
|
'view_type': 'form', |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'washing.washing', |
||||
|
'view_id': view_id, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': _('Works'), |
||||
|
'res_id': work_ids and work_ids[0] |
||||
|
} |
||||
|
else: |
||||
|
value = { |
||||
|
'domain': str([('id', 'in', work_ids)]), |
||||
|
'view_type': 'form', |
||||
|
'view_mode': 'tree,form', |
||||
|
'res_model': 'washing.washing', |
||||
|
'view_id': False, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': _('Works'), |
||||
|
'res_id': work_ids |
||||
|
} |
||||
|
|
||||
|
return value |
||||
|
|
||||
|
|
||||
|
def action_view_invoice(self): |
||||
|
|
||||
|
inv_obj = self.env['account.move'].search([('invoice_origin', '=', self.sale_obj.name)]) |
||||
|
inv_ids = [] |
||||
|
for each in inv_obj: |
||||
|
inv_ids.append(each.id) |
||||
|
view_id = self.env.ref('account.view_move_form').id |
||||
|
if inv_ids: |
||||
|
if len(inv_ids) <= 1: |
||||
|
value = { |
||||
|
'view_type': 'form', |
||||
|
'view_mode': 'form', |
||||
|
'res_model': 'account.move', |
||||
|
'view_id': view_id, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': _('Invoice'), |
||||
|
'res_id': inv_ids and inv_ids[0] |
||||
|
} |
||||
|
else: |
||||
|
value = { |
||||
|
'domain': str([('id', 'in', inv_ids)]), |
||||
|
'view_type': 'form', |
||||
|
'view_mode': 'tree,form', |
||||
|
'res_model': 'account.move', |
||||
|
'view_id': False, |
||||
|
'type': 'ir.actions.act_window', |
||||
|
'name': _('Invoice'), |
||||
|
'res_id': inv_ids |
||||
|
} |
||||
|
|
||||
|
return value |
||||
|
|
||||
|
name = fields.Char(string="Label", copy=False) |
||||
|
invoice_status = fields.Selection([ |
||||
|
('upselling', 'Upselling Opportunity'), |
||||
|
('invoiced', 'Fully Invoiced'), |
||||
|
('to invoice', 'To Invoice'), |
||||
|
('no', 'Nothing to Invoice') |
||||
|
], string='Invoice Status', invisible=1, related='sale_obj.invoice_status', store=True) |
||||
|
sale_obj = fields.Many2one('sale.order', invisible=1) |
||||
|
invoice_count = fields.Integer(compute='_invoice_count', string='# Invoice') |
||||
|
work_count = fields.Integer(compute='_work_count', string='# Works') |
||||
|
partner_id = fields.Many2one('res.partner', string='Customer', readonly=True, |
||||
|
states={'draft': [('readonly', False)], 'order': [('readonly', False)]}, required=True, |
||||
|
change_default=True, index=True, track_visibility='always') |
||||
|
partner_invoice_id = fields.Many2one('res.partner', string='Invoice Address', readonly=True, required=True, |
||||
|
states={'draft': [('readonly', False)], 'order': [('readonly', False)]}, |
||||
|
help="Invoice address for current sales order.") |
||||
|
partner_shipping_id = fields.Many2one('res.partner', string='Delivery Address', readonly=True, required=True, |
||||
|
states={'draft': [('readonly', False)], 'order': [('readonly', False)]}, |
||||
|
help="Delivery address for current sales order.") |
||||
|
order_date = fields.Datetime(string="Date", default=datetime.now().strftime('%Y-%m-%d %H:%M:%S')) |
||||
|
laundry_person = fields.Many2one('res.users', string='Laundry Person', required=1) |
||||
|
order_lines = fields.One2many('laundry.order.line', 'laundry_obj', required=1, ondelete='cascade') |
||||
|
total_amount = fields.Float(compute='get_total', string='Total', store=1) |
||||
|
currency_id = fields.Many2one("res.currency", string="Currency") |
||||
|
note = fields.Text(string='Terms and conditions') |
||||
|
state = fields.Selection([ |
||||
|
('draft', 'Draft'), |
||||
|
('order', 'Laundry Order'), |
||||
|
('process', 'Processing'), |
||||
|
('done', 'Done'), |
||||
|
('return', 'Returned'), |
||||
|
('cancel', 'Cancelled'), |
||||
|
], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') |
||||
|
|
||||
|
|
||||
|
class LaundryManagementLine(models.Model): |
||||
|
_name = 'laundry.order.line' |
||||
|
|
||||
|
@api.depends('washing_type', 'extra_work', 'qty') |
||||
|
def get_amount(self): |
||||
|
for obj in self: |
||||
|
total = obj.washing_type.amount*obj.qty |
||||
|
for each in obj.extra_work: |
||||
|
total += each.amount*obj.qty |
||||
|
obj.amount = total |
||||
|
|
||||
|
product_id = fields.Many2one('product.product', string='Dress', required=1) |
||||
|
qty = fields.Integer(string='No of items', required=1) |
||||
|
description = fields.Text(string='Description') |
||||
|
washing_type = fields.Many2one('washing.type', string='Washing Type', required=1) |
||||
|
extra_work = fields.Many2many('washing.work', string='Extra Work') |
||||
|
amount = fields.Float(compute='get_amount', string='Amount') |
||||
|
laundry_obj = fields.Many2one('laundry.order', invisible=1) |
||||
|
state = fields.Selection([ |
||||
|
('draft', 'Draft'), |
||||
|
('wash', 'Washing'), |
||||
|
('extra_work', 'Make Over'), |
||||
|
('done', 'Done'), |
||||
|
('cancel', 'Cancelled'), |
||||
|
], string='Status', readonly=True, copy=False, index=True, default='draft') |
||||
|
|
||||
|
|
||||
|
class WashingType(models.Model): |
||||
|
_name = 'washing.type' |
||||
|
|
||||
|
name = fields.Char(string='Name', required=1) |
||||
|
assigned_person = fields.Many2one('res.users', string='Assigned Person', required=1) |
||||
|
amount = fields.Float(string='Service Charge', required=1) |
||||
|
|
||||
|
|
||||
|
class ExtraWork(models.Model): |
||||
|
_name = 'washing.work' |
||||
|
|
||||
|
name = fields.Char(string='Name', required=1) |
||||
|
assigned_person = fields.Many2one('res.users', string='Assigned Person', required=1) |
||||
|
amount = fields.Float(string='Service Charge', required=1) |
||||
|
|
||||
|
|
||||
|
|
||||
|
class Washing(models.Model): |
||||
|
_name = 'washing.washing' |
||||
|
|
||||
|
|
||||
|
def start_wash(self): |
||||
|
if not self.laundry_works: |
||||
|
self.laundry_obj.state = 'wash' |
||||
|
self.laundry_obj.laundry_obj.state = 'process' |
||||
|
for each in self: |
||||
|
for obj in each.product_line: |
||||
|
self.env['sale.order.line'].create({'product_id': obj.product_id.id, |
||||
|
'name': obj.name, |
||||
|
'price_unit': obj.price_unit, |
||||
|
'order_id': each.laundry_obj.laundry_obj.sale_obj.id, |
||||
|
'product_uom_qty': obj.quantity, |
||||
|
'product_uom': obj.uom_id.id, |
||||
|
}) |
||||
|
self.state = 'process' |
||||
|
|
||||
|
|
||||
|
def set_to_done(self): |
||||
|
self.state = 'done' |
||||
|
f = 0 |
||||
|
if not self.laundry_works: |
||||
|
if self.laundry_obj.extra_work: |
||||
|
for each in self.laundry_obj.extra_work: |
||||
|
self.create({'name': each.name, |
||||
|
'user_id': each.assigned_person.id, |
||||
|
'description': self.laundry_obj.description, |
||||
|
'laundry_obj': self.laundry_obj.id, |
||||
|
'state': 'draft', |
||||
|
'laundry_works': True, |
||||
|
'washing_date': datetime.now().strftime('%Y-%m-%d %H:%M:%S')}) |
||||
|
self.laundry_obj.state = 'extra_work' |
||||
|
laundry_obj = self.search([('laundry_obj.laundry_obj', '=', self.laundry_obj.laundry_obj.id)]) |
||||
|
for each in laundry_obj: |
||||
|
if each.state != 'done' or each.state == 'cancel': |
||||
|
f = 1 |
||||
|
break |
||||
|
if f == 0: |
||||
|
self.laundry_obj.laundry_obj.state = 'done' |
||||
|
laundry_obj1 = self.search([('laundry_obj', '=', self.laundry_obj.id)]) |
||||
|
f1 = 0 |
||||
|
for each in laundry_obj1: |
||||
|
if each.state != 'done' or each.state == 'cancel': |
||||
|
f1 = 1 |
||||
|
break |
||||
|
if f1 == 0: |
||||
|
self.laundry_obj.state = 'done' |
||||
|
|
||||
|
|
||||
|
@api.depends('product_line') |
||||
|
def get_total(self): |
||||
|
total = 0 |
||||
|
for obj in self: |
||||
|
for each in obj.product_line: |
||||
|
total += each.subtotal |
||||
|
obj.total_amount = total |
||||
|
|
||||
|
name = fields.Char(string='Work') |
||||
|
laundry_works = fields.Boolean(default=False, invisible=1) |
||||
|
user_id = fields.Many2one('res.users', string='Assigned Person') |
||||
|
washing_date = fields.Datetime(string='Date') |
||||
|
description = fields.Text(string='Description') |
||||
|
state = fields.Selection([ |
||||
|
('draft', 'Draft'), |
||||
|
('process', 'Process'), |
||||
|
('done', 'Done'), |
||||
|
('cancel', 'Cancelled'), |
||||
|
], string='Status', readonly=True, copy=False, index=True, default='draft') |
||||
|
laundry_obj = fields.Many2one('laundry.order.line', invisible=1) |
||||
|
product_line = fields.One2many('wash.order.line', 'wash_obj', string='Products', ondelete='cascade') |
||||
|
total_amount = fields.Float(compute='get_total', string='Grand Total') |
||||
|
|
||||
|
|
||||
|
class SaleOrderInherit(models.Model): |
||||
|
_name = 'wash.order.line' |
||||
|
|
||||
|
@api.depends('price_unit', 'quantity') |
||||
|
def compute_amount(self): |
||||
|
total = 0 |
||||
|
for obj in self: |
||||
|
total += obj.price_unit * obj.quantity |
||||
|
obj.subtotal = total |
||||
|
|
||||
|
wash_obj = fields.Many2one('washing.washing', string='Order Reference', ondelete='cascade') |
||||
|
name = fields.Text(string='Description', required=True) |
||||
|
uom_id = fields.Many2one('product.uom', 'Unit of Measure ', required=True) |
||||
|
quantity = fields.Integer(string='Quantity') |
||||
|
product_id = fields.Many2one('product.product', string='Product') |
||||
|
price_unit = fields.Float('Unit Price', default=0.0, related='product_id.list_price') |
||||
|
subtotal = fields.Float(compute='compute_amount', string='Subtotal', readonly=True, store=True) |
||||
|
|
||||
|
|
||||
|
class LaundryManagementInvoice(models.TransientModel): |
||||
|
_inherit = 'sale.advance.payment.inv' |
||||
|
|
||||
|
|
||||
|
def create_invoices(self): |
||||
|
context = self._context |
||||
|
if context.get('laundry_sale_obj'): |
||||
|
sale_orders = self.env['sale.order'].browse(context.get('laundry_sale_obj')) |
||||
|
else: |
||||
|
sale_orders = self.env['sale.order'].browse(self._context.get('active_ids', [])) |
||||
|
if self.advance_payment_method == 'delivered': |
||||
|
sale_orders._create_invoices() |
||||
|
elif self.advance_payment_method == 'all': |
||||
|
sale_orders._create_invoices()(final=True) |
||||
|
else: |
||||
|
# Create deposit product if necessary |
||||
|
if not self.product_id: |
||||
|
vals = self._prepare_deposit_product() |
||||
|
self.product_id = self.env['product.product'].create(vals) |
||||
|
self.env['ir.values'].sudo().set_default('sale.config.settings', 'deposit_product_id_setting', |
||||
|
self.product_id.id) |
||||
|
|
||||
|
sale_line_obj = self.env['sale.order.line'] |
||||
|
for order in sale_orders: |
||||
|
if self.advance_payment_method == 'percentage': |
||||
|
amount = order.amount_untaxed * self.amount / 100 |
||||
|
else: |
||||
|
amount = self.amount |
||||
|
if self.product_id.invoice_policy != 'order': |
||||
|
raise UserError(_( |
||||
|
'The product used to invoice a down payment should have an invoice policy set to "Ordered' |
||||
|
' quantities". Please update your deposit product to be able to create a deposit invoice.')) |
||||
|
if self.product_id.type != 'service': |
||||
|
raise UserError(_( |
||||
|
"The product used to invoice a down payment should be of type 'Service'. Please use another " |
||||
|
"product or update this product.")) |
||||
|
taxes = self.product_id.taxes_id.filtered( |
||||
|
lambda r: not order.company_id or r.company_id == order.company_id) |
||||
|
if order.fiscal_position_id and taxes: |
||||
|
tax_ids = order.fiscal_position_id.map_tax(taxes).ids |
||||
|
else: |
||||
|
tax_ids = taxes.ids |
||||
|
so_line = sale_line_obj.create({ |
||||
|
'name': _('Advance: %s') % (time.strftime('%m %Y'),), |
||||
|
'price_unit': amount, |
||||
|
'product_uom_qty': 0.0, |
||||
|
'order_id': order.id, |
||||
|
'discount': 0.0, |
||||
|
'product_uom': self.product_id.uom_id.id, |
||||
|
'product_id': self.product_id.id, |
||||
|
'tax_id': [(6, 0, tax_ids)], |
||||
|
}) |
||||
|
self._create_invoice(order, so_line, amount) |
||||
|
if self._context.get('open_invoices', False): |
||||
|
return sale_orders.action_view_invoice() |
||||
|
return {'type': 'ir.actions.act_window_close'} |
||||
|
|
||||
|
def _create_invoice(self, order, so_line, amount): |
||||
|
if (self.advance_payment_method == 'percentage' and self.amount <= 0.00) or (self.advance_payment_method == 'fixed' and self.fixed_amount <= 0.00): |
||||
|
raise UserError(_('The value of the down payment amount must be positive.')) |
||||
|
if self.advance_payment_method == 'percentage': |
||||
|
amount = order.amount_untaxed * self.amount / 100 |
||||
|
name = _("Down payment of %s%%") % (self.amount,) |
||||
|
else: |
||||
|
amount = self.fixed_amount |
||||
|
name = _('Down Payment') |
||||
|
|
||||
|
invoice_vals = { |
||||
|
'type': 'out_invoice', |
||||
|
'invoice_origin': order.name, |
||||
|
'invoice_user_id': order.user_id.id, |
||||
|
'narration': order.note, |
||||
|
'partner_id': order.partner_invoice_id.id, |
||||
|
'fiscal_position_id': order.fiscal_position_id.id or order.partner_id.property_account_position_id.id, |
||||
|
'partner_shipping_id': order.partner_shipping_id.id, |
||||
|
'currency_id': order.pricelist_id.currency_id.id, |
||||
|
'invoice_payment_ref': order.client_order_ref, |
||||
|
'invoice_payment_term_id': order.payment_term_id.id, |
||||
|
'team_id': order.team_id.id, |
||||
|
'campaign_id': order.campaign_id.id, |
||||
|
'medium_id': order.medium_id.id, |
||||
|
'source_id': order.source_id.id, |
||||
|
'invoice_line_ids': [(0, 0, { |
||||
|
'name': name, |
||||
|
'price_unit': amount, |
||||
|
'quantity': 1.0, |
||||
|
'product_id': self.product_id.id, |
||||
|
'sale_line_ids': [(6, 0, [so_line.id])], |
||||
|
'analytic_tag_ids': [(6, 0, so_line.analytic_tag_ids.ids)], |
||||
|
'analytic_account_id': order.analytic_account_id.id or False, |
||||
|
})], |
||||
|
} |
||||
|
if order.fiscal_position_id: |
||||
|
invoice_vals['fiscal_position_id'] = order.fiscal_position_id.id |
||||
|
invoice = self.env['account.move'].create(invoice_vals) |
||||
|
invoice.message_post_with_view('mail.message_origin_link', |
||||
|
values={'self': invoice, 'origin': order}, |
||||
|
subtype_id=self.env.ref('mail.mt_note').id) |
||||
|
return invoice |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from . import laundry_report |
@ -0,0 +1,98 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Jesni Banu and Nilmar Shereef(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import models, fields, tools |
||||
|
|
||||
|
|
||||
|
class DifferedCheckHistory(models.Model): |
||||
|
_name = "report.laundry.order" |
||||
|
_description = "Laundry Order Analysis" |
||||
|
_auto = False |
||||
|
|
||||
|
name = fields.Char(string="Label") |
||||
|
invoice_status = fields.Selection([ |
||||
|
('upselling', 'Upselling Opportunity'), |
||||
|
('invoiced', 'Fully Invoiced'), |
||||
|
('to invoice', 'To Invoice'), |
||||
|
('no', 'Nothing to Invoice') |
||||
|
], string='Invoice Status', store=True) |
||||
|
partner_id = fields.Many2one('res.partner', string='Customer') |
||||
|
partner_invoice_id = fields.Many2one('res.partner', string='Invoice Address') |
||||
|
partner_shipping_id = fields.Many2one('res.partner', string='Delivery Address') |
||||
|
order_date = fields.Datetime(string="Date") |
||||
|
laundry_person = fields.Many2one('res.users', string='Laundry Person') |
||||
|
total_amount = fields.Float(string='Total') |
||||
|
currency_id = fields.Many2one("res.currency", string="Currency") |
||||
|
state = fields.Selection([ |
||||
|
('draft', 'Draft'), |
||||
|
('order', 'Laundry Order'), |
||||
|
('process', 'Processing'), |
||||
|
('done', 'Done'), |
||||
|
('return', 'Returned'), |
||||
|
('cancel', 'Cancelled'), |
||||
|
], string='Status') |
||||
|
|
||||
|
_order = 'name desc' |
||||
|
|
||||
|
def _select(self): |
||||
|
select_str = """ |
||||
|
SELECT |
||||
|
(select 1 ) AS nbr, |
||||
|
t.id as id, |
||||
|
t.name as name, |
||||
|
t.invoice_status as invoice_status, |
||||
|
t.partner_id as partner_id, |
||||
|
t.partner_invoice_id as partner_invoice_id, |
||||
|
t.partner_shipping_id as partner_shipping_id, |
||||
|
t.order_date as order_date, |
||||
|
t.laundry_person as laundry_person, |
||||
|
t.total_amount as total_amount, |
||||
|
t.currency_id as currency_id, |
||||
|
t.state as state |
||||
|
""" |
||||
|
return select_str |
||||
|
|
||||
|
def _group_by(self): |
||||
|
group_by_str = """ |
||||
|
GROUP BY |
||||
|
t.id, |
||||
|
name, |
||||
|
invoice_status, |
||||
|
partner_id, |
||||
|
partner_invoice_id, |
||||
|
partner_shipping_id, |
||||
|
order_date, |
||||
|
laundry_person, |
||||
|
total_amount, |
||||
|
currency_id, |
||||
|
state |
||||
|
""" |
||||
|
return group_by_str |
||||
|
|
||||
|
def init(self): |
||||
|
tools.sql.drop_view_if_exists(self._cr, 'report_laundry_order') |
||||
|
self._cr.execute(""" |
||||
|
CREATE view report_laundry_order as |
||||
|
%s |
||||
|
FROM laundry_order t |
||||
|
%s |
||||
|
""" % (self._select(), self._group_by())) |
|
@ -0,0 +1,27 @@ |
|||||
|
<?xml version="1.0" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="module_laundry_category" model="ir.module.category"> |
||||
|
<field name="name">Laundry</field> |
||||
|
<field name="sequence">18</field> |
||||
|
</record> |
||||
|
<record id="laundry_group_user" model="res.groups"> |
||||
|
<field name="name">User</field> |
||||
|
<field name="category_id" ref="module_laundry_category"/> |
||||
|
<field name="users" eval="[(4, ref('base.group_user'))]"/> |
||||
|
</record> |
||||
|
<record id="laundry_group_manager" model="res.groups"> |
||||
|
<field name="name">Manager</field> |
||||
|
<field name="implied_ids" eval="[(4, ref('laundry_group_user'))]"/> |
||||
|
<field name="category_id" ref="module_laundry_category"/> |
||||
|
<field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/> |
||||
|
</record> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
||||
|
|
||||
|
|
||||
|
<!--id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink--> |
||||
|
<!--access_washing_type,washing.type.user,model_washing_type,base.group_user,1,0,0,0--> |
||||
|
<!--access_washing_type,washing.type.manager,model_washing_type,base.group_system,1,1,1,1--> |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 202 KiB |
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 17 KiB |
@ -0,0 +1,471 @@ |
|||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png);background-repeat:no-repeat;background-size:100%;padding: 4% 0% 2% 15%;background-position-y: -107px;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;"> |
||||
|
Laundry Service Management |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;"> |
||||
|
Cybrosys Industrial Module Which Helps You To Manage Laundry Service |
||||
|
</h3> |
||||
|
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;"> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">Cybrosys Technologies</a> |
||||
|
</h5> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank"> |
||||
|
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;"> |
||||
|
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="padding: 3% 0% 3% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Overview |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
This is an industrial specific module by <a href="https://www.cybrosys.com">Cybrosys Technologies</a> |
||||
|
for Laundry Management. It manages |
||||
|
the laundry process with assigning works to workers. |
||||
|
</h3> |
||||
|
<br/> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;padding: 2% 0% 0% 0%;"> |
||||
|
Configuration |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 0% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<b>Access Rights</b> |
||||
|
<br/> |
||||
|
|
||||
|
<span>Laundry Manager : Laundry manager have all the access across the fleet rental management <br/></span> |
||||
|
<span>Laundry User : Laundry user can read, write and create the records.</span> |
||||
|
</h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 30% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Features |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Recording Laundry Order. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Assigning Works. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Make Invoices. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Separate View for Works. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Billing Facility for Extra Works. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Label Printing for Every Order. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Detailed Laundry Work Analysis Report. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Access Rights From Multiple Level. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Configuration for Washing Type. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Configuration for Extra Works (Ironing/Patching etc..). |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 3% 0% 0% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Screenshots |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Recording Laundry Order |
||||
|
</h3> |
||||
|
<div> |
||||
|
<h4>Laundry Management -> Laundry Management -> Laundry Order</h4> |
||||
|
</div> |
||||
|
<span> |
||||
|
When you install this module, an extra menu |
||||
|
Laundry Management will created in main menu. |
||||
|
Youcan see the different sub menus under the main menu. Here you |
||||
|
can create Laundry Order via clicking the 'Create' button. There you can specify the customer, laundry person, |
||||
|
order lines with washing type and Extra works for your order. |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-1.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<span> |
||||
|
When you confirm the Laundry Order the corresponding works will created under the |
||||
|
assigned person. There you can add extra products also. It will also add in Billing. |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-2.png" alt="" style="width: 95%;"/> |
||||
|
</div><div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-3.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Laundry Label |
||||
|
</h3> |
||||
|
<span> |
||||
|
You can print label for each order from the print menu. |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-4.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Laundry Works |
||||
|
</h3> |
||||
|
<div> |
||||
|
<h4>Laundry Management -> Laundry Management -> Laundry Works</h4> |
||||
|
</div> |
||||
|
<span> |
||||
|
This is the Separate Laundry Works Form. Here you can see the work status of Laundry Works. |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-6.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<span> |
||||
|
If there is any extra works , it will created as work When you finish the main work. Then we can see the |
||||
|
status of that order line is become 'Make Over'. |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-7.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Invoice |
||||
|
</h3> |
||||
|
<span> |
||||
|
You can create Invoice via the button 'Create Invoice' when the order reaches to 'Done' state. |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-8.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<span> |
||||
|
You can see all the Invoice through the smart button "Invoices" from the Laundry Order form. |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-9.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Configuration |
||||
|
</h3> |
||||
|
<span> |
||||
|
You can configure washing types from the menu Laundry Management -> Configuration -> Washing Type by |
||||
|
specifying the name, assigned person and service charge |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-10.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<span> |
||||
|
You can configure additional works from the menu Laundry Management -> Configuration -> Additional Works by |
||||
|
specifying the name, assigned person and service charge |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-11.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Laundry Work Analysis Report |
||||
|
</h3> |
||||
|
<span> |
||||
|
You can also analyse your all Laundry Works from Laundry Management -> Report -> Laundry Order Analysis. |
||||
|
</span> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-laundry-12.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container oe_dark"> |
||||
|
<br/> |
||||
|
<h2 class="oe_slogan" style="margin-top:20px;" >You Looking for a functional Documentation of this Application.?</h2> |
||||
|
<h3 class="oe_slogan">Give a Request Mail to: <i class="fa fa-envelope" aria-hidden="true"></i> <a href="#" style="color:blue;">odoo@cybrosys.com</a></h3> |
||||
|
<br/> |
||||
|
<br/> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="padding: 7px 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<a style="color: #080808 !important;" href="https://apps.odoo.com/apps/modules/browse?search=cybrosys" target="_blank"><img src="https://www.cybrosys.com/images/view-more-apps.jpg" alt="cybrosys technologies" style="width: 100%;margin-bottom: 50px;"/></a> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Services |
||||
|
</h2> |
||||
|
<div style="display:flex;padding-top: 20px;justify-content: space-between;"> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
Odoo Customization |
||||
|
</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
Odoo Implementation </a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
Odoo Integration |
||||
|
</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
Odoo Support</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
Hire Odoo Developers</a> |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Industries |
||||
|
</h2> |
||||
|
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
Trading |
||||
|
</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easily procure and sell your products. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
Manufacturing</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Plan, track and schedule your operations. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
Restaurant</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Run your bar or restaurant methodical. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
POS</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easy configuring and convivial selling. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
E-commerce & Website</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Mobile friendly, awe-inspiring product pages. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
Hotel Management</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
An all-inclusive hotel management application. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
Education</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
A Collaborative platform for educational management. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
Service Management</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Keep track of services and invoice accordingly. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;"> |
||||
|
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;"> |
||||
|
<div> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a> |
||||
|
</div> |
||||
|
<br> |
||||
|
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
||||
|
<div> |
||||
|
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
@ -0,0 +1,222 @@ |
|||||
|
<section class="oe_container"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan">Laundry Service Management</h2> |
||||
|
<h3 class="oe_slogan">Cybrosys Industrial Module Which Helps You To Manage Laundry Service</h3> |
||||
|
<h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h4> |
||||
|
</div> |
||||
|
<div class="oe_row oe_spaced" style="padding-left:65px;"> |
||||
|
<h4>Features:</h4> |
||||
|
<div> |
||||
|
<span style="color:green;"> ☑ </span> Recording Laundry Order.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Assigning Works.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Make Invoices.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Separate View for Works.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Billing Facility for Extra Works.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Label Printing for Every Order.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Detailed Laundry Work Analysis Report.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Access Rights From Multiple Level.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Configuration for Washing Type.<br/> |
||||
|
<span style="color:green;"> ☑ </span> Configuration for Extra Works (Ironing/Patching etc..).<br/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container oe_dark"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<div class="oe_picture"> |
||||
|
<h3 class="oe_slogan">Overview</h3> |
||||
|
<p class="oe_mt32" style="text-align: center;"> |
||||
|
This is an industrial specific module by <a href="https://www.cybrosys.com">Cybrosys Technologies</a> |
||||
|
for Laundry Management. It manages |
||||
|
the laundry process with assigning works to workers. |
||||
|
</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan">Recording Laundry Order</h3> |
||||
|
<div style="text-align: center"> |
||||
|
<p> |
||||
|
<h4>Laundry Management -> Laundry Management -> Laundry Order</h4> |
||||
|
<p> |
||||
|
<span style="text-align: center;padding-left:65px;">☛ When you install this module, an extra menu |
||||
|
Laundry Management will created in main menu. You |
||||
|
can see the different sub menus under the main menu. Here you |
||||
|
can create Laundry Order via clicking the 'Create' button. There you can specify the customer, laundry person, |
||||
|
order lines with washing type and Extra works for your order. |
||||
|
</span> |
||||
|
</div> |
||||
|
<div style="text-align: center"> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;height: 400px;" src="laundry_order.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<div style="padding-left:65px;"> |
||||
|
<span>☛ When you confirm the Laundry Order the corresponding works will created under the |
||||
|
assigned person. There you can add extra products also. It will also add in Billing.</span> |
||||
|
</div> |
||||
|
<div class="oe_row oe_padded"> |
||||
|
<div class="oe_span6"> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;" src="laundr_work.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="oe_span6"> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;" src="demo_work.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container oe_dark"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan">Laundry Label</h3> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<div style="padding-left:65px;"> |
||||
|
<span>☛ You can print label for each order from the print menu.</span> |
||||
|
</div> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;" src="label.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container oe_dark"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan">Laundry Works</h3> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<p> |
||||
|
<h4>Laundry Management -> Laundry Management -> Laundry Works</h4> |
||||
|
<p> |
||||
|
</div> |
||||
|
<div style="padding-left:65px;"> |
||||
|
<span>☛ This is the Separate Laundry Works Form. Here you can see the work status of Laundry Works.</span> |
||||
|
</div> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;" src="order.png"> |
||||
|
</div> |
||||
|
<div style="padding-left:65px;"> |
||||
|
<span>☛ If there is any extra works , it will created as work When you finish the main work. Then we can see the |
||||
|
status of that order line is become 'Make Over'.</span> |
||||
|
</div> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;" src="makeover.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan">Invoice</h3> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<span>☛ |
||||
|
You can create Invoice via the button 'Create Invoice' when the order reaches to 'Done' state. |
||||
|
</span> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;height:400px;" src="invoice1.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<span>☛ |
||||
|
You can see all the Invoice through the smart button "Invoices" from the Laundry Order form. |
||||
|
</span> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;height:400px;" src="invoice.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container oe_dark"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan">Configuration</h3> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<span>☛ |
||||
|
You can configure washing types from the menu Laundry Management -> Configuration -> Washing Type by |
||||
|
specifying the name, assigned person and service charge |
||||
|
</span> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;height:400px;" src="washing_type.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<span>☛ |
||||
|
You can configure additional works from the menu Laundry Management -> Configuration -> Additional Works by |
||||
|
specifying the name, assigned person and service charge |
||||
|
</span> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;height:400px;" src="additional.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container oe_dark"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan">Laundry Work Analysis Report</h3> |
||||
|
<div class="" style="text-align: center"> |
||||
|
<span>☛ |
||||
|
You can also analyse your all Laundry Works from Laundry Management -> Report -> Laundry Order Analysis. |
||||
|
</span> |
||||
|
<div class="oe_demo oe_picture oe_screenshot"> |
||||
|
<img style="border:10px solid white;height:400px;" src="laundry_report.png"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h3 class="oe_slogan">Access Rights</h3> |
||||
|
<div class="" style="padding-left:65px;"> |
||||
|
<span>☛Laundry Manager :- Laundry manager have all the access across the fleet rental management <br/></span> |
||||
|
<span>☛Laundry User :- Laundry user can read, write and create the records.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container"> |
||||
|
<br/> |
||||
|
<h2 class="oe_slogan" style="margin-top:20px;" >You Looking for a functional Documentation of this Application.?</h2> |
||||
|
<h3 class="oe_slogan">Give a Request Mail to: <i class="fa fa-envelope" aria-hidden="true"></i> <a href="#" style="color:blue;">odoo@cybrosys.com</a></h3> |
||||
|
<br/> |
||||
|
<br/> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container oe_dark"> |
||||
|
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2> |
||||
|
<div class="oe_slogan" style="margin-top:10px !important;"> |
||||
|
<div> |
||||
|
<a class="btn btn-primary btn-lg mt8" |
||||
|
style="color: #FFFFFF !important;border-radius: 0;" href="http://www.cybrosys.com"><i |
||||
|
class="fa fa-envelope"></i> Email </a> <a |
||||
|
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" |
||||
|
href="http://www.cybrosys.com/contact/"><i |
||||
|
class="fa fa-phone"></i> Contact Us </a> <a |
||||
|
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" |
||||
|
href="http://www.cybrosys.com/odoo-customization-and-installation/"><i |
||||
|
class="fa fa-check-square"></i> Request Customization </a> |
||||
|
</div> |
||||
|
<br> |
||||
|
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block"> |
||||
|
<div> |
||||
|
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;"></i></a></td> |
||||
|
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;"></i></a></td> |
||||
|
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px;padding-left: 8px;"></i></a></td> |
||||
|
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;"></i></a></td> |
||||
|
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;"></i></a></td> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
|
||||
|
|
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 202 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 199 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 133 KiB |
@ -0,0 +1,90 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="washing_type_form_view" model="ir.ui.view"> |
||||
|
<field name="name">washing.type.form</field> |
||||
|
<field name="model">washing.type</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form> |
||||
|
<sheet> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="name"/> |
||||
|
<field name="assigned_person"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="amount"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="washing_type_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">washing.type.tree</field> |
||||
|
<field name="model">washing.type</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="name"/> |
||||
|
<field name="assigned_person"/> |
||||
|
<field name="amount"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_washing_type" model="ir.actions.act_window"> |
||||
|
<field name="name">Washing Type</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">washing.type</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="washing_work_form_view" model="ir.ui.view"> |
||||
|
<field name="name">washing.work.form</field> |
||||
|
<field name="model">washing.work</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form> |
||||
|
<sheet> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="name"/> |
||||
|
<field name="assigned_person"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="amount"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="washing_work_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">washing.work.tree</field> |
||||
|
<field name="model">washing.work</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree> |
||||
|
<field name="name"/> |
||||
|
<field name="assigned_person"/> |
||||
|
<field name="amount"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_washing_work" model="ir.actions.act_window"> |
||||
|
<field name="name">Additional Works</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">washing.work</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem id="laundry_config_menu" name="Configuration" parent="laundry_management_menu" sequence="3"/> |
||||
|
<menuitem id="laundry_customer" name="Customers" parent="laundry_config_menu" action="base.action_partner_customer_form" sequence="1"/> |
||||
|
<menuitem id="laundry_products" name="Products" parent="laundry_config_menu" action="product.product_normal_action_sell" sequence="2"/> |
||||
|
<menuitem id="laundry_washing_type" name="Washing Type" parent="laundry_config_menu" action="action_washing_type" sequence="3"/> |
||||
|
<menuitem id="laundry_washing_work" name="Additional Works" parent="laundry_config_menu" action="action_washing_work" sequence="4"/> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,48 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<template id="laundry_order_label"> |
||||
|
<t t-call="web.html_container"> |
||||
|
<t t-foreach="docs" t-as="obj"> |
||||
|
<t t-call="web.external_layout"> |
||||
|
<div class="page"> |
||||
|
<div class="col-xs-4" style="padding:0;"> |
||||
|
<table style="border: 2px solid black;border-spacing:0;margin-bottom:0;height:122px;" class="table"> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<th style="text-align: left; vertical-align: middle;" colspan="2"> |
||||
|
<span t-esc="obj.name"/> |
||||
|
</th> |
||||
|
<th style="text-align: right; vertical-align: middle;" colspan="2"> |
||||
|
<span t-esc="obj.order_date"/> |
||||
|
</th> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td style="border: 2px solid black;text-align: center; vertical-align: middle;" colspan="2"> |
||||
|
<span>CUSTOMER</span> |
||||
|
</td> |
||||
|
<td style="border: 2px solid black;text-align: center; vertical-align: middle;" colspan="2"> |
||||
|
<span t-esc="obj.partner_id.name"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
</t> |
||||
|
</t> |
||||
|
</t> |
||||
|
</template> |
||||
|
|
||||
|
<report |
||||
|
string="Laundry Order Label" |
||||
|
id="laundry_label" |
||||
|
model="laundry.order" |
||||
|
report_type="qweb-pdf" |
||||
|
name="laundry_management.laundry_order_label" |
||||
|
file="laundry_management.laundry_order_label" |
||||
|
/> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,27 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="view_report_laundry_order" model="ir.ui.view"> |
||||
|
<field name="name">report.laundry.order.pivot</field> |
||||
|
<field name="model">report.laundry.order</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<pivot string="Laundry Order Analysis" display_quantity="true" disable_linking="True"> |
||||
|
<field name="name" type="row"/> |
||||
|
</pivot> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_laundry_order_analysis" model="ir.actions.act_window"> |
||||
|
<field name="name">Laundry Order Analysis</field> |
||||
|
<field name="res_model">report.laundry.order</field> |
||||
|
<field name="view_mode">pivot</field> |
||||
|
<field name="context">{'group_by_no_leaf':1,'group_by':[]}</field> |
||||
|
<field name="help">This report allows you to analyse the performance of your Laundry Mangement. </field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem id="laundry_report_menu" name="Report" parent="laundry_management_menu" sequence="2"/> |
||||
|
<menuitem name="Laundry Order Analysis" action="action_laundry_order_analysis" id="menu_laundry_order_analysis" parent="laundry_report_menu" sequence="1"/> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,118 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="sequence_laundry" model="ir.sequence"> |
||||
|
<field name="name">Laundry Order Code</field> |
||||
|
<field name="code">laundry.order</field> |
||||
|
<field eval="4" name="padding" /> |
||||
|
<field name="prefix">LO</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="laundry_order_form_view" model="ir.ui.view"> |
||||
|
<field name="name">laundry.order.form</field> |
||||
|
<field name="model">laundry.order</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Laundry Order" class="o_sale_order"> |
||||
|
<header> |
||||
|
<button name="confirm_order" class="oe_highlight" string="Confirm Order" type="object" states="draft"/> |
||||
|
<button name="create_invoice" class="oe_highlight" string="Create Invoice" type="object" |
||||
|
attrs="{'invisible': ['|',('invoice_status', '=', 'invoiced'), ('state', '!=', 'done')]}"/> |
||||
|
<button name="return_dress" string="Return" class="oe_highlight" type="object" states="done"/> |
||||
|
<button name="cancel_order" string="Cancel" type="object" states="draft"/> |
||||
|
<field name="state" widget="statusbar" statusbar_visible="draft,order,done,return"/> |
||||
|
</header> |
||||
|
<sheet> |
||||
|
<div class="oe_button_box" name="buttons"> |
||||
|
<button name='action_view_laundry_works' class="oe_stat_button" type="object" icon="fa-money" states="order,done,return,process"> |
||||
|
<field string="Works" name="work_count" widget="statinfo" /> |
||||
|
</button> |
||||
|
<button name='action_view_invoice' class="oe_stat_button" type="object" icon="fa-money" states="done,return"> |
||||
|
<field string="Invoice" name="invoice_count" widget="statinfo" /> |
||||
|
</button> |
||||
|
</div> |
||||
|
<div class="oe_title"> |
||||
|
<h1> |
||||
|
<field name="name" readonly="1"/> |
||||
|
</h1> |
||||
|
</div> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="partner_id"/> |
||||
|
<field name="partner_invoice_id" context="{'default_type':'invoice'}" |
||||
|
attrs="{'readonly': [('state','in',('done','return','cancel'))]}"/> |
||||
|
<field name="partner_shipping_id" context="{'default_type':'delivery'}" |
||||
|
attrs="{'readonly': [('state','in',('done','return','cancel'))]}"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="order_date" attrs="{'readonly': [('state','!=','draft')]}"/> |
||||
|
<field name="currency_id" attrs="{'readonly': [('state','!=','draft')]}"/> |
||||
|
<field name="laundry_person" attrs="{'readonly': [('state','in',('return', 'cancel'))]}"/> |
||||
|
<field name="invoice_status" invisible="1"/> |
||||
|
<field name="sale_obj" invisible="1"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<notebook> |
||||
|
<page string="Order Lines"> |
||||
|
<field name="order_lines" attrs="{'readonly': [('state','!=','draft')]}"> |
||||
|
<tree string="Laundry Order Lines" editable="bottom" decoration-info="state == 'draft'" |
||||
|
colors="grey:state == 'done';black:state == 'extra_work';green:state == 'wash';"> |
||||
|
<field name="product_id"/> |
||||
|
<field name="description"/> |
||||
|
<field name="qty"/> |
||||
|
<field name="washing_type"/> |
||||
|
<field name="extra_work" widget="many2many_tags"/> |
||||
|
<field name="state"/> |
||||
|
<field name="amount"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
<group class="oe_subtotal_footer oe_right" colspan="2" name="laundry_total"> |
||||
|
<field name="total_amount" widget='monetary' options="{'currency_field': 'currency_id'}"/> |
||||
|
</group> |
||||
|
<field name="note" class="oe_inline" placeholder="Setup default terms and conditions in your company settings."/> |
||||
|
<div class="oe_clear"/> |
||||
|
</page> |
||||
|
</notebook> |
||||
|
</sheet> |
||||
|
<div class="oe_chatter"> |
||||
|
<field name="message_follower_ids" widget="mail_followers"/> |
||||
|
<field name="message_ids" widget="mail_thread"/> |
||||
|
</div> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="laundry_order_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">laundry.order.tree</field> |
||||
|
<field name="model">laundry.order</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree decoration-info="state == 'draft'"> |
||||
|
<field name="name"/> |
||||
|
<field name="partner_id"/> |
||||
|
<field name="order_date"/> |
||||
|
<field name="laundry_person"/> |
||||
|
<field name="total_amount"/> |
||||
|
<field name="state"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_laundry_order" model="ir.actions.act_window"> |
||||
|
<field name="name">Laundry Management</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">laundry.order</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="domain">[('laundry_person','=', uid)]</field> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="oe_view_nocontent_create"> |
||||
|
Click to create a New Order. |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem name="Laundry Management" id="laundry_management_menu" icon="fa-car"/> |
||||
|
<menuitem id="laundry_management_sub_menu" name="Laundry Management" parent="laundry_management_menu" sequence="1"/> |
||||
|
<menuitem id="laundry_management_order" name="Laundry Order" parent="laundry_management_sub_menu" action="action_laundry_order" sequence="1"/> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,77 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8" ?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="washing_form_view" model="ir.ui.view"> |
||||
|
<field name="name">washing.washing.form</field> |
||||
|
<field name="model">washing.washing</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Washing" create="false"> |
||||
|
<header> |
||||
|
<button name="start_wash" class="oe_highlight" string="Start" type="object" states="draft"/> |
||||
|
<button name="set_to_done" class="oe_highlight" string="Set to Done" type="object" states="process"/> |
||||
|
<field name="state" widget="statusbar" statusbar_visible="draft,process,done"/> |
||||
|
</header> |
||||
|
<sheet> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="name" readonly="1"/> |
||||
|
<field name="user_id"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="washing_date" readonly="1"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<notebook> |
||||
|
<page string="Description"> |
||||
|
<field name="description"/> |
||||
|
</page> |
||||
|
<page string="Additional Products"> |
||||
|
<field name="product_line" attrs="{'readonly': [('state','!=','draft')]}"> |
||||
|
<tree editable="bottom"> |
||||
|
<field name="product_id"/> |
||||
|
<field name="name"/> |
||||
|
<field name="quantity"/> |
||||
|
<field name="uom_id"/> |
||||
|
<field name="price_unit"/> |
||||
|
<field name="subtotal"/> |
||||
|
<field name="wash_obj" invisible="1"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
<group class="oe_subtotal_footer oe_right" colspan="2" name="product_total"> |
||||
|
<field name="total_amount" widget='monetary'/> |
||||
|
</group> |
||||
|
<div class="oe_clear"/> |
||||
|
</page> |
||||
|
</notebook> |
||||
|
</sheet> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
|
||||
|
<record id="washing_tree_view" model="ir.ui.view"> |
||||
|
<field name="name">washing.washing.tree</field> |
||||
|
<field name="model">washing.washing</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<tree create="false" edit="false" decoration-info="state == 'draft'"> |
||||
|
<field name="name"/> |
||||
|
<field name="user_id"/> |
||||
|
<field name="washing_date"/> |
||||
|
<field name="state"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<record id="action_washing" model="ir.actions.act_window"> |
||||
|
<field name="name">Washing</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">washing.washing</field> |
||||
|
<field name="view_mode">tree,form</field> |
||||
|
<field name="domain">[('user_id','=', uid)]</field> |
||||
|
</record> |
||||
|
|
||||
|
<menuitem id="laundry_washing" name="Laundry Works" parent="laundry_management_sub_menu" action="action_washing" sequence="2"/> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,40 @@ |
|||||
|
Sale Discount on Total Amount |
||||
|
============================= |
||||
|
Discount on Total in Sale and Invoice With Discount Limit and Approval |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
* No additional configurations needed |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
* Developer: Faslu Rahman@cybrosys |
||||
|
Version 13: Nimisha Murali@cybrosys |
||||
|
|
||||
|
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,24 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from . import models |
||||
|
from . import reports |
||||
|
|
@ -0,0 +1,56 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
{ |
||||
|
'name': 'Sale Discount on Total Amount', |
||||
|
'version': '13.0.1.0.0', |
||||
|
'category': 'Sales Management', |
||||
|
'summary': "Discount on Total in Sale and Invoice With Discount Limit and Approval", |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'website': 'http://www.cybrosys.com', |
||||
|
'description': """ |
||||
|
|
||||
|
Sale Discount for Total Amount |
||||
|
======================= |
||||
|
Module to manage discount on total amount in Sale. |
||||
|
as an specific amount or percentage |
||||
|
""", |
||||
|
'depends': ['sale', |
||||
|
'account', 'delivery' |
||||
|
], |
||||
|
'data': [ |
||||
|
'views/sale_view.xml', |
||||
|
'views/account_invoice_view.xml', |
||||
|
'views/invoice_report.xml', |
||||
|
'views/sale_order_report.xml', |
||||
|
'views/res_config_view.xml', |
||||
|
|
||||
|
], |
||||
|
'demo': [ |
||||
|
], |
||||
|
'images': ['static/description/banner.jpg'], |
||||
|
'license': 'AGPL-3', |
||||
|
'application': True, |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
## Module <inventory_barcode_scanning> |
||||
|
|
||||
|
#### 15.10.2019 |
||||
|
#### Version 13.0.1.0.0 |
||||
|
#### ADD |
||||
|
Initial commit for Sale Discount On Total Amount |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,25 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from . import sale |
||||
|
from . import account_invoice |
||||
|
from . import discount_approval |
||||
|
|
@ -0,0 +1,151 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import api, fields, models |
||||
|
|
||||
|
|
||||
|
class AccountInvoice(models.Model): |
||||
|
_inherit = "account.move" |
||||
|
|
||||
|
@api.depends( |
||||
|
'line_ids.debit', |
||||
|
'line_ids.credit', |
||||
|
'line_ids.amount_currency', |
||||
|
'line_ids.amount_residual', |
||||
|
'line_ids.amount_residual_currency', |
||||
|
'line_ids.payment_id.state') |
||||
|
def _compute_amount(self): |
||||
|
|
||||
|
invoice_ids = [move.id for move in self if move.id and move.is_invoice(include_receipts=True)] |
||||
|
self.env['account.payment'].flush(['state']) |
||||
|
if invoice_ids: |
||||
|
self._cr.execute( |
||||
|
''' |
||||
|
SELECT move.id |
||||
|
FROM account_move move |
||||
|
JOIN account_move_line line ON line.move_id = move.id |
||||
|
JOIN account_partial_reconcile part ON part.debit_move_id = line.id OR part.credit_move_id = line.id |
||||
|
JOIN account_move_line rec_line ON |
||||
|
(rec_line.id = part.credit_move_id AND line.id = part.debit_move_id) |
||||
|
OR |
||||
|
(rec_line.id = part.debit_move_id AND line.id = part.credit_move_id) |
||||
|
JOIN account_payment payment ON payment.id = rec_line.payment_id |
||||
|
JOIN account_journal journal ON journal.id = rec_line.journal_id |
||||
|
WHERE payment.state IN ('posted', 'sent') |
||||
|
AND journal.post_at = 'bank_rec' |
||||
|
AND move.id IN %s |
||||
|
''', [tuple(invoice_ids)] |
||||
|
) |
||||
|
in_payment_set = set(res[0] for res in self._cr.fetchall()) |
||||
|
else: |
||||
|
in_payment_set = {} |
||||
|
|
||||
|
for move in self: |
||||
|
total_untaxed = 0.0 |
||||
|
total_untaxed_currency = 0.0 |
||||
|
total_tax = 0.0 |
||||
|
total_tax_currency = 0.0 |
||||
|
total_residual = 0.0 |
||||
|
total_residual_currency = 0.0 |
||||
|
currencies = set() |
||||
|
|
||||
|
for line in move.line_ids: |
||||
|
if line.currency_id: |
||||
|
currencies.add(line.currency_id) |
||||
|
|
||||
|
# Untaxed amount. |
||||
|
if (move.is_invoice(include_receipts=True) and not line.exclude_from_invoice_tab) \ |
||||
|
or (move.type == 'entry' and line.debit and not line.tax_line_id): |
||||
|
total_untaxed += line.balance |
||||
|
total_untaxed_currency += line.amount_currency |
||||
|
|
||||
|
# Tax amount. |
||||
|
if line.tax_line_id: |
||||
|
total_tax += line.balance |
||||
|
total_tax_currency += line.amount_currency |
||||
|
|
||||
|
# Residual amount. |
||||
|
if move.type == 'entry' or line.account_id.user_type_id.type in ('receivable', 'payable'): |
||||
|
total_residual += line.amount_residual |
||||
|
total_residual_currency += line.amount_residual_currency |
||||
|
|
||||
|
total = total_untaxed + total_tax |
||||
|
total_currency = total_untaxed_currency + total_tax_currency |
||||
|
|
||||
|
if move.type == 'entry' or move.is_outbound(): |
||||
|
sign = 1 |
||||
|
else: |
||||
|
sign = -1 |
||||
|
move.amount_discount = sum((line.quantity * line.price_unit * line.discount)/100 for line in move.line_ids) |
||||
|
move.amount_untaxed = sign * (total_untaxed_currency if len(currencies) == 1 else total_untaxed) |
||||
|
move.amount_tax = sign * (total_tax_currency if len(currencies) == 1 else total_tax) |
||||
|
move.amount_total = sign * (total_currency if len(currencies) == 1 else total) |
||||
|
move.amount_residual = -sign * (total_residual_currency if len(currencies) == 1 else total_residual) |
||||
|
move.amount_untaxed_signed = -total_untaxed |
||||
|
move.amount_tax_signed = -total_tax |
||||
|
move.amount_total_signed = -total |
||||
|
move.amount_residual_signed = total_residual |
||||
|
|
||||
|
currency = len(currencies) == 1 and currencies.pop() or move.company_id.currency_id |
||||
|
is_paid = currency and currency.is_zero(move.amount_residual) or not move.amount_residual |
||||
|
|
||||
|
# Compute 'invoice_payment_state'. |
||||
|
if move.state == 'posted' and is_paid: |
||||
|
if move.id in in_payment_set: |
||||
|
move.invoice_payment_state = 'in_payment' |
||||
|
else: |
||||
|
move.invoice_payment_state = 'paid' |
||||
|
else: |
||||
|
move.invoice_payment_state = 'not_paid' |
||||
|
|
||||
|
discount_type = fields.Selection([('percent', 'Percentage'), ('amount', 'Amount')], string='Discount Type', |
||||
|
readonly=True, states={'draft': [('readonly', False)]}, default='percent') |
||||
|
discount_rate = fields.Float('Discount Amount', digits=(16, 2), readonly=True, states={'draft': [('readonly', False)]}) |
||||
|
amount_discount = fields.Monetary(string='Discount', store=True, readonly=True, compute='_compute_amount', |
||||
|
track_visibility='always') |
||||
|
|
||||
|
@api.onchange('discount_type', 'discount_rate', 'invoice_line_ids') |
||||
|
def supply_rate(self): |
||||
|
for inv in self: |
||||
|
if inv.discount_type == 'percent': |
||||
|
for line in inv.line_ids: |
||||
|
line.discount = inv.discount_rate |
||||
|
else: |
||||
|
total = discount = 0.0 |
||||
|
for line in inv.invoice_line_ids: |
||||
|
total += (line.quantity * line.price_unit) |
||||
|
if inv.discount_rate != 0: |
||||
|
discount = (inv.discount_rate / total) * 100 |
||||
|
else: |
||||
|
discount = inv.discount_rate |
||||
|
for line in inv.invoice_line_ids: |
||||
|
line.discount = discount |
||||
|
|
||||
|
|
||||
|
def button_dummy(self): |
||||
|
self.supply_rate() |
||||
|
return True |
||||
|
|
||||
|
class AccountInvoiceLine(models.Model): |
||||
|
_inherit = "account.move.line" |
||||
|
|
||||
|
discount = fields.Float(string='Discount (%)', digits=(16, 20), default=0.0) |
@ -0,0 +1,82 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import api, fields, models |
||||
|
|
||||
|
|
||||
|
class sale_discount(models.Model): |
||||
|
_inherit = 'sale.order' |
||||
|
|
||||
|
state = fields.Selection([ |
||||
|
('draft', 'Quotation'), |
||||
|
('sent', 'Quotation Sent'), |
||||
|
('waiting', 'Waiting Approval'), |
||||
|
('sale', 'Sales Order'), |
||||
|
('done', 'Locked'), |
||||
|
('cancel', 'Cancelled'), |
||||
|
], string='Status', readonly=True, copy=False, index=True, track_visibility='onchange', default='draft') |
||||
|
|
||||
|
|
||||
|
def action_confirm(self): |
||||
|
discnt = 0.0 |
||||
|
no_line = 0.0 |
||||
|
if self.company_id.so_double_validation == 'two_step': |
||||
|
for line in self.order_line: |
||||
|
no_line += 1 |
||||
|
discnt += line.discount |
||||
|
discnt = (discnt / no_line) |
||||
|
if self.company_id.so_double_validation_limit and discnt > self.company_id.so_double_validation_limit: |
||||
|
self.state = 'waiting' |
||||
|
return True |
||||
|
super(sale_discount, self).action_confirm() |
||||
|
|
||||
|
|
||||
|
def action_approve(self): |
||||
|
super(sale_discount, self).action_confirm() |
||||
|
return True |
||||
|
|
||||
|
|
||||
|
class Company(models.Model): |
||||
|
_inherit = 'res.company' |
||||
|
|
||||
|
so_double_validation = fields.Selection([ |
||||
|
('one_step', 'Confirm sale orders in one step'), |
||||
|
('two_step', 'Get 2 levels of approvals to confirm a sale order') |
||||
|
], string="Levels of Approvals", default='one_step', |
||||
|
help="Provide a double validation mechanism for sales discount") |
||||
|
|
||||
|
so_double_validation_limit = fields.Float(string="Percentage of Discount that requires double validation'", |
||||
|
help="Minimum discount percentage for which a double validation is required") |
||||
|
|
||||
|
|
||||
|
class ResDiscountSettings(models.TransientModel): |
||||
|
_inherit = 'res.config.settings' |
||||
|
|
||||
|
so_order_approval = fields.Boolean("Sale Discount Approval", default=lambda self: self.env.user.company_id.so_double_validation == 'two_step') |
||||
|
|
||||
|
so_double_validation = fields.Selection(related='company_id.so_double_validation',string="Levels of Approvals *", readonly=False) |
||||
|
so_double_validation_limit = fields.Float(string="Discount limit requires approval in %", |
||||
|
related='company_id.so_double_validation_limit', readonly=False) |
||||
|
|
||||
|
def set_values(self): |
||||
|
super(ResDiscountSettings, self).set_values() |
||||
|
self.so_double_validation = 'two_step' if self.so_order_approval else 'one_step' |
@ -0,0 +1,104 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import api, fields, models |
||||
|
import odoo.addons.decimal_precision as dp |
||||
|
|
||||
|
|
||||
|
class SaleOrder(models.Model): |
||||
|
_inherit = "sale.order" |
||||
|
|
||||
|
@api.depends('order_line.price_total') |
||||
|
def _amount_all(self): |
||||
|
""" |
||||
|
Compute the total amounts of the SO. |
||||
|
""" |
||||
|
for order in self: |
||||
|
amount_untaxed = amount_tax = amount_discount = 0.0 |
||||
|
for line in order.order_line: |
||||
|
amount_untaxed += line.price_subtotal |
||||
|
amount_tax += line.price_tax |
||||
|
amount_discount += (line.product_uom_qty * line.price_unit * line.discount) / 100 |
||||
|
order.update({ |
||||
|
'amount_untaxed': amount_untaxed, |
||||
|
'amount_tax': amount_tax, |
||||
|
'amount_discount': amount_discount, |
||||
|
'amount_total': amount_untaxed + amount_tax, |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
discount_type = fields.Selection([('percent', 'Percentage'), ('amount', 'Amount')], string='Discount type', |
||||
|
readonly=True,states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, |
||||
|
default='percent') |
||||
|
discount_rate = fields.Float('Discount Rate', digits=dp.get_precision('Account'), |
||||
|
readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}) |
||||
|
amount_untaxed = fields.Monetary(string='Untaxed Amount', store=True, readonly=True, compute='_amount_all', |
||||
|
track_visibility='always') |
||||
|
amount_tax = fields.Monetary(string='Taxes', store=True, readonly=True, compute='_amount_all', |
||||
|
track_visibility='always') |
||||
|
amount_total = fields.Monetary(string='Total', store=True, readonly=True, compute='_amount_all', |
||||
|
track_visibility='always') |
||||
|
amount_discount = fields.Monetary(string='Discount', store=True, readonly=True, compute='_amount_all', |
||||
|
digits=dp.get_precision('Account'), track_visibility='always') |
||||
|
|
||||
|
@api.onchange('discount_type', 'discount_rate', 'order_line') |
||||
|
def supply_rate(self): |
||||
|
|
||||
|
for order in self: |
||||
|
if order.discount_type == 'percent': |
||||
|
for line in order.order_line: |
||||
|
line.discount = order.discount_rate |
||||
|
else: |
||||
|
total = discount = 0.0 |
||||
|
for line in order.order_line: |
||||
|
total += round((line.product_uom_qty * line.price_unit)) |
||||
|
if order.discount_rate != 0: |
||||
|
discount = (order.discount_rate / total) * 100 |
||||
|
else: |
||||
|
discount = order.discount_rate |
||||
|
for line in order.order_line: |
||||
|
line.discount = discount |
||||
|
|
||||
|
def _prepare_invoice(self,): |
||||
|
invoice_vals = super(SaleOrder, self)._prepare_invoice() |
||||
|
invoice_vals.update({ |
||||
|
'discount_type': self.discount_type, |
||||
|
'discount_rate': self.discount_rate, |
||||
|
}) |
||||
|
return invoice_vals |
||||
|
|
||||
|
|
||||
|
|
||||
|
def button_dummy(self): |
||||
|
|
||||
|
self.supply_rate() |
||||
|
return True |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
class SaleOrderLine(models.Model): |
||||
|
_inherit = "sale.order.line" |
||||
|
|
||||
|
discount = fields.Float(string='Discount (%)', digits=(16, 20), default=0.0) |
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from . import invoice_report |
||||
|
from . import sale_report |
@ -0,0 +1,35 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class AccountInvoiceReport(models.Model): |
||||
|
_inherit = 'account.invoice.report' |
||||
|
|
||||
|
discount = fields.Float('Discount', readonly=True) |
||||
|
|
||||
|
def _select(self): |
||||
|
res = super(AccountInvoiceReport,self)._select() |
||||
|
select_str = res + """, line.discount AS discount """ |
||||
|
return select_str |
||||
|
|
@ -0,0 +1,36 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Faslu Rahman(odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
|
||||
|
|
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class DiscountSaleReport(models.Model): |
||||
|
_inherit = 'sale.report' |
||||
|
|
||||
|
discount = fields.Float('Discount', readonly=True) |
||||
|
|
||||
|
def _select(self): |
||||
|
res = super(DiscountSaleReport,self)._select() |
||||
|
select_str = res+""",sum(l.product_uom_qty / u.factor * u2.factor * cr.rate * l.price_unit * l.discount / 100.0) |
||||
|
as discount""" |
||||
|
return select_str |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 9.9 KiB |
@ -0,0 +1,351 @@ |
|||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png);background-repeat:no-repeat;background-size:100%;padding: 4% 0% 2% 15%;background-position-y: -107px;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;"> |
||||
|
Global Discount In Sale |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;"> |
||||
|
Global Discount In Sale |
||||
|
</h3> |
||||
|
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;"> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com">Cybrosys Technologies</a> |
||||
|
</h5> |
||||
|
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank"> |
||||
|
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;"> |
||||
|
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 3% 0% 3% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Overview |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
This module allows you to mention discount on Total of sale order and Total of Customer Invoice as percentage or as amount. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 19% 0% 30% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Features |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Select 'Percentage' from Discount type and give discount percentage as Discount rate. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Select 'Amount' from Discount type and give discount amount as Discount rate. |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
System will update the value of Discount and Total |
||||
|
</h3> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 3% 0% 0% 15%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Screenshots |
||||
|
</h2> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Sale Order |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-sales-discount-1.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Customer Invoice |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-sales-discount-2.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
And the module also allows you to set a limit for total discount in percentage. Exceeding this limit |
||||
|
will require approval. |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-sales-discount-3.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;"> |
||||
|
<img src="https://www.cybrosys.com/images/ico-tick.png"> |
||||
|
Manager level users can approve sale orders in 'Waiting Approval' stage. |
||||
|
</h3> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<img src="cybrosys-sales-discount-4.png" alt="" style="width: 95%;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
||||
|
<section class="oe_container" style="padding: 7px 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<a style="color: #080808 !important;" href="https://apps.odoo.com/apps/modules/browse?search=cybrosys" target="_blank"><img src="https://www.cybrosys.com/images/view-more-apps.jpg" alt="cybrosys technologies" style="width: 100%;margin-bottom: 50px;"/></a> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Services |
||||
|
</h2> |
||||
|
<div style="display:flex;padding-top: 20px;justify-content: space-between;"> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank"> |
||||
|
Odoo Customization |
||||
|
</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank"> |
||||
|
Odoo Implementation </a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank"> |
||||
|
Odoo Integration |
||||
|
</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank"> |
||||
|
Odoo Support</a> |
||||
|
</h3> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 18%;"> |
||||
|
|
||||
|
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;"> |
||||
|
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank"> |
||||
|
Hire Odoo Developers</a> |
||||
|
</h3> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="padding: 1% 0% 0% 3%;"> |
||||
|
<div class="oe_row oe_spaced"> |
||||
|
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;"> |
||||
|
Our Industries |
||||
|
</h2> |
||||
|
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;"> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank"> |
||||
|
Trading |
||||
|
</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easily procure and sell your products. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank"> |
||||
|
Manufacturing</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Plan, track and schedule your operations. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank"> |
||||
|
Restaurant</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Run your bar or restaurant methodical. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank"> |
||||
|
POS</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Easy configuring and convivial selling. |
||||
|
</h3> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank"> |
||||
|
E-commerce & Website</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Mobile friendly, awe-inspiring product pages. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank"> |
||||
|
Hotel Management</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
An all-inclusive hotel management application. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank"> |
||||
|
Education</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
A Collaborative platform for educational management. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="flex-basis: 32%;padding-top: 20px;"> |
||||
|
|
||||
|
<div style="width:30%; float:left;"> |
||||
|
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width:70%;float:left;"> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;"> |
||||
|
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank"> |
||||
|
Service Management</a> |
||||
|
</h3> |
||||
|
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;"> |
||||
|
Keep track of services and invoice accordingly. |
||||
|
</h3> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;"> |
||||
|
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;"> |
||||
|
<div> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a> |
||||
|
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a> |
||||
|
</div> |
||||
|
<br> |
||||
|
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block"> |
||||
|
<div> |
||||
|
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td> |
||||
|
</div> |
||||
|
</div> |
||||
|
</section> |
||||
|
|
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 41 KiB |
@ -0,0 +1,41 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="discount_account_invoice_view_form" model="ir.ui.view"> |
||||
|
<field name="name">discount.account.invoice</field> |
||||
|
<field name="model">account.move</field> |
||||
|
<field name="inherit_id" ref="account.view_move_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='discount']" position="attributes"> |
||||
|
<attribute name="digits">[16, 2]</attribute> |
||||
|
</xpath> |
||||
|
<xpath expr="//field[@name='amount_untaxed']" position="after"> |
||||
|
<field name="amount_discount"/> |
||||
|
</xpath> |
||||
|
<xpath expr="//field[@name='narration']" position="after"> |
||||
|
<div> |
||||
|
<label for="discount_type" string="Discount Type :"/> |
||||
|
<field name="discount_type" class="oe_inline"/> |
||||
|
</div> |
||||
|
<div> |
||||
|
<label for="discount_rate" string="Discount Rate :"/> |
||||
|
<field name="discount_rate" class="oe_inline"/> |
||||
|
</div> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
<!-- <record id="discount_view_invoice_line_tree" model="ir.ui.view">--> |
||||
|
<!-- <field name="name">discount.account.invoice.line.tree</field>--> |
||||
|
<!-- <field name="model">account.move.line.tree.grouped.sales.purchase</field>--> |
||||
|
<!-- <field name="inherit_id" ref="account.view_move_line_tree_grouped_sales_purchases"/>--> |
||||
|
<!-- <field name="arch" type="xml">--> |
||||
|
<!-- <xpath expr="//field[@name='debit']" position="attributes">--> |
||||
|
<!-- <attribute name="digits">[16, 2]</attribute>--> |
||||
|
<!-- </xpath>--> |
||||
|
<!-- </field>--> |
||||
|
<!-- </record>--> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,20 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<template id="report_invoice_customized" inherit_id="account.report_invoice_document"> |
||||
|
<xpath expr="//span[@t-field='line.discount']" position="replace"> |
||||
|
<span t-esc="'%.2f'%(line.discount)"/> |
||||
|
</xpath> |
||||
|
<xpath expr="//tr[hasclass('border-black')]" position="after"> |
||||
|
<tr> |
||||
|
<td>Discount</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-field="o.amount_discount"/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</xpath> |
||||
|
</template> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,33 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<record id="res_config_settings_view_form_sale_discount" model="ir.ui.view"> |
||||
|
<field name="name">res.config.settings.view.form.inherit.sale.discount</field> |
||||
|
<field name="model">res.config.settings</field> |
||||
|
<field name="priority" eval="10"/> |
||||
|
<field name="inherit_id" ref="sale.res_config_settings_view_form" /> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//div[@data-key='sale_management']/div[hasclass('o_settings_container')][2]/div[hasclass('o_setting_box')][2]" position="after"> |
||||
|
|
||||
|
<div class="col-xs-12 col-md-6 o_setting_box"> |
||||
|
<div class="o_setting_left_pane"> |
||||
|
<field name="so_order_approval"/> |
||||
|
</div> |
||||
|
<div class="o_setting_right_pane"> |
||||
|
<label for="so_order_approval"/> |
||||
|
<span class="fa fa-lg fa-building-o" title="Values set here are company-specific." groups="base.group_multi_company"/> |
||||
|
<div class="text-muted"> |
||||
|
Managers must approve discount |
||||
|
</div> |
||||
|
<div class="content-group" attrs="{'invisible': [('so_order_approval', '=', False)]}"> |
||||
|
<div class="row mt16"> |
||||
|
<label for="so_double_validation_limit" class="col-md-4 o_light_label"/> |
||||
|
<field name="so_double_validation_limit"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,21 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<template id="report_saleorder_customized" inherit_id="sale.report_saleorder_document"> |
||||
|
<xpath expr="//span[@t-field='line.discount']" position="replace"> |
||||
|
<span t-esc="'%.2f'%(line.discount)"/> |
||||
|
</xpath> |
||||
|
<xpath expr="//tr[hasclass('border-black')]" position="after"> |
||||
|
<tr> |
||||
|
<td>Total Discount</td> |
||||
|
<td class="text-right"> |
||||
|
<span t-field="doc.amount_discount" |
||||
|
t-options='{"widget": "monetary", "display_currency": doc.pricelist_id.currency_id}'/> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</xpath> |
||||
|
</template> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,43 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<data> |
||||
|
|
||||
|
<record id="discount_sale_view_form" model="ir.ui.view"> |
||||
|
<field name="name">discount.sale.order.form</field> |
||||
|
<field name="model">sale.order</field> |
||||
|
<field name="inherit_id" ref="sale.view_order_form"/> |
||||
|
<field name="arch" type="xml"> |
||||
|
<xpath expr="//field[@name='state']" position="before"> |
||||
|
<button string="Approve" type="object" name="action_approve" states="waiting" class="oe_highlight" |
||||
|
groups="sales_team.group_sale_manager"/> |
||||
|
</xpath> |
||||
|
<xpath expr="//button[@name='action_cancel']" position="attributes"> |
||||
|
<attribute name ="states">draft,sent,sale,waiting</attribute> |
||||
|
</xpath> |
||||
|
<!--<xpath expr="//tree/field[@name='discount']" position="replace">--> |
||||
|
<!--<field name="discount" class="oe_inline" digits="(16, 2)"/> %%--> |
||||
|
<!--</xpath>--> |
||||
|
<xpath expr="//group[@name='note_group']" position="replace"> |
||||
|
<group col="4"> |
||||
|
<group name="discount" colspan="2"> |
||||
|
<field name="discount_type"/> |
||||
|
<field name="discount_rate"/> |
||||
|
</group> |
||||
|
<group class="oe_subtotal_footer oe_right" colspan="2" name="sale_total"> |
||||
|
<field name="amount_untaxed" widget='monetary' options="{'currency_field': 'currency_id'}"/> |
||||
|
<field name="amount_discount" widget='monetary' options="{'currency_field': 'currency_id'}"/> |
||||
|
<field name="amount_tax" widget='monetary' options="{'currency_field': 'currency_id'}"/> |
||||
|
<div class="oe_subtotal_footer_separator oe_inline"> |
||||
|
<label for="amount_total" /> |
||||
|
<button name="button_dummy" |
||||
|
states="draft,sent" string="(update)" type="object" class="oe_edit_only oe_link"/> |
||||
|
</div> |
||||
|
<field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator" widget='monetary' options="{'currency_field': 'currency_id'}"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
</xpath> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</data> |
||||
|
</odoo> |
@ -0,0 +1,38 @@ |
|||||
|
Website Coupon Code v12 |
||||
|
======================= |
||||
|
Manage Website Coupon Codes for Products/Categories/All Products & Its Redeem Operations |
||||
|
|
||||
|
Configuration |
||||
|
============= |
||||
|
* No additional configurations needed |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
* Developer:v11- Linto CT @ cybrosys, odoo@cybrosys.com |
||||
|
Version12:Meera K@cybrosys,Contact: odoo@cybrosys.com |
||||
|
Version 13: Vaishnavi B@cybrosys,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,25 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
|
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: LINTO C T (odoo@cybrosys.com) |
||||
|
# you can modify it under the terms of the GNU LESSER |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. |
||||
|
|
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
||||
|
# If not, see <https://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
|
||||
|
from . import models |
||||
|
from . import controllers |
||||
|
|
||||
|
|
@ -0,0 +1,44 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: LINTO C T (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
{ |
||||
|
'name': 'Website Coupon Code', |
||||
|
'version': '13.0.1.0.0', |
||||
|
'summary': 'Manage Website Coupon Codes for Products/Categories/All Products & Its Redeem Operations', |
||||
|
'category': 'Website', |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'maintainer': 'Cybrosys Techno Solutions', |
||||
|
'depends': ['sale_management', 'website_sale'], |
||||
|
'website': 'https://www.cybrosys.com', |
||||
|
'data': [ |
||||
|
'data/product_data.xml', |
||||
|
'views/gift_voucher.xml', |
||||
|
'views/applied_coupons.xml', |
||||
|
'views/templates.xml', |
||||
|
'security/ir.model.access.csv' |
||||
|
], |
||||
|
'images': ['static/description/banner.jpg'], |
||||
|
'license': 'AGPL-3', |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
'application': False, |
||||
|
} |
@ -0,0 +1,3 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
from . import main |
@ -0,0 +1,155 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
from datetime import datetime |
||||
|
|
||||
|
from odoo import fields, http, tools, _ |
||||
|
from odoo.http import request |
||||
|
from odoo.addons.website_sale.controllers.main import WebsiteSale |
||||
|
|
||||
|
|
||||
|
class WebsiteCoupon(WebsiteSale): |
||||
|
|
||||
|
@http.route(['/shop/cart'], type='http', auth="public", website=True) |
||||
|
def cart(self, access_token=None, revive='', **post): |
||||
|
|
||||
|
order = request.website.sale_get_order() |
||||
|
if order and order.state != 'draft': |
||||
|
request.session['sale_order_id'] = None |
||||
|
order = request.website.sale_get_order() |
||||
|
values = {} |
||||
|
|
||||
|
if order: |
||||
|
from_currency = order.company_id.currency_id |
||||
|
to_currency = order.pricelist_id.currency_id |
||||
|
compute_currency = lambda price: from_currency._convert( |
||||
|
price, to_currency, request.env.user.company_id, fields.Date.today()) |
||||
|
else: |
||||
|
compute_currency = lambda price: price |
||||
|
|
||||
|
values.update({ |
||||
|
'website_sale_order': order, |
||||
|
'compute_currency': compute_currency, |
||||
|
'date': fields.Date.today(), |
||||
|
'suggested_products': [], |
||||
|
}) |
||||
|
if order: |
||||
|
_order = order |
||||
|
if not request.env.context.get('pricelist'): |
||||
|
_order = order.with_context(pricelist=order.pricelist_id.id) |
||||
|
values['suggested_products'] = _order._cart_accessories() |
||||
|
|
||||
|
if post.get('type') == 'popover': |
||||
|
return request.render("website_sale.cart_popover", values, headers={'Cache-Control': 'no-cache'}) |
||||
|
if post.get('code_not_available'): |
||||
|
values['code_not_available'] = post.get('code_not_available') |
||||
|
elif post.get('coupon_not_available'): |
||||
|
values['coupon_not_available'] = post.get('coupon_not_available') |
||||
|
|
||||
|
return request.render("website_sale.cart", values) |
||||
|
|
||||
|
@http.route(['/shop/gift_coupon'], type='http', auth="public", website=True) |
||||
|
def gift_coupon(self, promo_voucher, **post): |
||||
|
"""This function will be executed when we click the apply button of the voucher code in the website. |
||||
|
It will verify the validity and availability of that coupon. If it can be applied, the coupon will be applied |
||||
|
and coupon balance will also be updated""" |
||||
|
|
||||
|
curr_user = request.env.user |
||||
|
coupon = request.env['gift.coupon'].sudo().search([('code', '=', promo_voucher)], limit=1) |
||||
|
flag = True |
||||
|
if coupon and coupon.total_avail > 0: |
||||
|
applied_coupons = request.env['partner.coupon'].sudo().search([('coupon', '=', promo_voucher), |
||||
|
('partner_id', '=', curr_user.partner_id.id)], limit=1) |
||||
|
|
||||
|
# checking voucher date and limit for each user for this coupon--------------------- |
||||
|
if coupon.partner_id: |
||||
|
if curr_user.partner_id.id != coupon.partner_id.id: |
||||
|
flag = False |
||||
|
today = datetime.now().date() |
||||
|
if flag and applied_coupons.number < coupon.limit and today <= coupon.voucher.expiry_date: |
||||
|
# checking coupon validity --------------------------- |
||||
|
# checking date of coupon ------------ |
||||
|
if coupon.start_date and coupon.end_date: |
||||
|
if today < coupon.start_date or today > coupon.end_date: |
||||
|
flag = False |
||||
|
elif coupon.start_date: |
||||
|
if today < coupon.start_date: |
||||
|
flag = False |
||||
|
elif coupon.end_date: |
||||
|
if today > coupon.end_date: |
||||
|
flag = False |
||||
|
else: |
||||
|
flag = False |
||||
|
else: |
||||
|
flag = False |
||||
|
if flag: |
||||
|
voucher_type = coupon.voucher.voucher_type |
||||
|
voucher_val = coupon.voucher_val |
||||
|
type = coupon.type |
||||
|
coupon_product = request.env['product.product'].sudo().search([('name', '=', 'Gift Coupon')], limit=1) |
||||
|
if coupon_product: |
||||
|
order = request.website.sale_get_order(force_create=1) |
||||
|
flag_product = False |
||||
|
for line in order.order_line: |
||||
|
if line.product_id.name == 'Gift Coupon': |
||||
|
flag = False |
||||
|
break |
||||
|
if flag and order.order_line: |
||||
|
if voucher_type == 'product': |
||||
|
# the voucher type is product ---------------------------- |
||||
|
categ_id = coupon.voucher.product_id |
||||
|
for line in order.order_line: |
||||
|
if line.product_id.name == categ_id.name: |
||||
|
flag_product = True |
||||
|
elif voucher_type == 'category': |
||||
|
# the voucher type is category ---------------------------- |
||||
|
product_id = coupon.voucher.product_categ |
||||
|
for line in order.order_line: |
||||
|
if line.product_id.categ_id.name == product_id.name: |
||||
|
flag_product = True |
||||
|
elif voucher_type == 'all': |
||||
|
# the voucher is applicable to all products ---------------------------- |
||||
|
flag_product = True |
||||
|
if flag_product: |
||||
|
# the voucher is applicable -------------------------------------- |
||||
|
if type == 'fixed': |
||||
|
# coupon type is 'fixed'-------------------------------------- |
||||
|
if voucher_val < order.amount_total: |
||||
|
coupon_product.product_tmpl_id.write({'list_price': -voucher_val}) |
||||
|
|
||||
|
else: |
||||
|
return request.redirect("/shop/cart?coupon_not_available=3") |
||||
|
elif type == 'percentage': |
||||
|
# coupon type is percentage ------------------------------------- |
||||
|
amount_final = 0 |
||||
|
if voucher_type == 'product': |
||||
|
for line in order.order_line: |
||||
|
if line.product_id.name == categ_id.name: |
||||
|
amount_final = (voucher_val / 100) * line.price_total |
||||
|
break |
||||
|
elif voucher_type == 'category': |
||||
|
for line in order.order_line: |
||||
|
if line.product_id.categ_id.name == product_id.name: |
||||
|
amount_final += (voucher_val / 100) * line.price_total |
||||
|
elif voucher_type == 'all': |
||||
|
amount_final = (voucher_val/100) * order.amount_total |
||||
|
coupon_product.product_tmpl_id.write({'list_price': -amount_final}) |
||||
|
order._cart_update(product_id=coupon_product.id, set_qty=1, add_qty=1) |
||||
|
# updating coupon balance-------------- |
||||
|
total = coupon.total_avail - 1 |
||||
|
coupon.write({'total_avail': total}) |
||||
|
# creating a record for this partner, i.e he is used this coupon once----------- |
||||
|
if not applied_coupons: |
||||
|
curr_user.partner_id.write({'applied_coupon': [(0, 0, {'partner_id': curr_user.partner_id.id, |
||||
|
'coupon': coupon.code, |
||||
|
'number': 1})]}) |
||||
|
else: |
||||
|
applied_coupons.write({'number': applied_coupons.number + 1}) |
||||
|
else: |
||||
|
return request.redirect("/shop/cart?coupon_not_available=1") |
||||
|
else: |
||||
|
return request.redirect("/shop/cart?coupon_not_available=2") |
||||
|
else: |
||||
|
|
||||
|
return request.redirect("/shop/cart?coupon_not_available=1") |
||||
|
|
||||
|
return request.redirect("/shop/cart") |
@ -0,0 +1,6 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo noupdate="1"> |
||||
|
<record model="product.product" id="discount_product"> |
||||
|
<field name="name">Gift Coupon</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,6 @@ |
|||||
|
## Module <website_coupon> |
||||
|
|
||||
|
#### 28.10.2019 |
||||
|
#### Version 13.0.1.0.0 |
||||
|
|
||||
|
Initial Commit for Website Coupon. |
@ -0,0 +1,315 @@ |
|||||
|
# Translation of Odoo Server. |
||||
|
# This file contains the translation of the following modules: |
||||
|
# * website_coupon |
||||
|
# |
||||
|
# Xavier Brochard <xavier@alternatif.org>, 2017. |
||||
|
msgid "" |
||||
|
msgstr "" |
||||
|
"Project-Id-Version: Odoo Server 10.0-20171109\n" |
||||
|
"Report-Msgid-Bugs-To: \n" |
||||
|
"POT-Creation-Date: 2017-11-17 11:24+0000\n" |
||||
|
"PO-Revision-Date: 2017-11-17 15:04+0100\n" |
||||
|
"Last-Translator: Xavier Brochard <xavier@alternatif.org>\n" |
||||
|
"Language-Team: French <>\n" |
||||
|
"MIME-Version: 1.0\n" |
||||
|
"Content-Type: text/plain; charset=UTF-8\n" |
||||
|
"Content-Transfer-Encoding: \n" |
||||
|
"Plural-Forms: \n" |
||||
|
"Language: fr\n" |
||||
|
"X-Generator: Lokalize 2.0\n" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.cart_lines_extended |
||||
|
msgid "<small><i class=\"fa fa-trash-o\"/> Remove</small>" |
||||
|
msgstr "<small><i class=\"fa fa-trash-o\"/> Enlever</small>" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: selection:gift.voucher,voucher_type:0 |
||||
|
msgid "All Products" |
||||
|
msgstr "Tous les articles" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_voucher_type |
||||
|
msgid "Applicable on " |
||||
|
msgstr "Valable sur" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.applied_coupons_view |
||||
|
msgid "Applied Coupons" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.voucher_code |
||||
|
msgid "Apply" |
||||
|
msgstr "Valider" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_code |
||||
|
msgid "Code" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: sql_constraint:gift.coupon:0 |
||||
|
msgid "Code already exists !" |
||||
|
msgstr "Ce code existe déjà!" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.gift_coupon_form |
||||
|
msgid "Conditions" |
||||
|
msgstr "Restrictions obligatoires" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_coupon |
||||
|
msgid "Coupon Applied" |
||||
|
msgstr "Code utilisé" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.menu,name:website_coupon.gift_coupon_history |
||||
|
msgid "Coupon History" |
||||
|
msgstr "Utilisation" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_res_partner_applied_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_res_users_applied_coupon |
||||
|
msgid "Coupons Applied" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_create_uid |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_create_uid |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_create_uid |
||||
|
msgid "Created by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_create_date |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_create_date |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_create_date |
||||
|
msgid "Created on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_display_name |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_display_name |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_display_name |
||||
|
msgid "Display Name" |
||||
|
msgstr "Nom affiché" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_end_date |
||||
|
msgid "End Date" |
||||
|
msgstr "Finit le" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_expiry_date |
||||
|
msgid "Expiry Date" |
||||
|
msgstr "Expire le" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: selection:gift.coupon,type:0 |
||||
|
msgid "Fixed Amount" |
||||
|
msgstr "Montant fixe" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.actions.act_window,name:website_coupon.action_gift_coupon |
||||
|
msgid "Generate Gift Coupons" |
||||
|
msgstr "Créer des codes promotionnels" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.menu,name:website_coupon.gift_coupon |
||||
|
#: model:product.product,name:website_coupon.discount_product |
||||
|
#: model:product.template,name:website_coupon.discount_product_product_template |
||||
|
msgid "Gift Coupon" |
||||
|
msgstr "Code promotionel" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.menu,name:website_coupon.gift_coupon_main |
||||
|
msgid "Gift Coupons" |
||||
|
msgstr "Codes promo" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.actions.act_window,name:website_coupon.action_gift_coupon_history |
||||
|
msgid "Gift Coupons History" |
||||
|
msgstr "Promotions utilisées" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.menu,name:website_coupon.gift_voucher |
||||
|
msgid "Gift Voucher" |
||||
|
msgstr "Promotions autorisées" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.actions.act_window,name:website_coupon.action_gift_voucher |
||||
|
msgid "Gift Vouchers" |
||||
|
msgstr "Promotions autorisées" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.voucher_code |
||||
|
msgid "Have a voucher code? Fill this field and apply." |
||||
|
msgstr "Vous avez un code de réduction ? Remplissez ce champ et validez." |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_id |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_id |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_id |
||||
|
msgid "ID" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon___last_update |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher___last_update |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon___last_update |
||||
|
msgid "Last Modified on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_write_uid |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_write_uid |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_write_uid |
||||
|
msgid "Last Updated by" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_write_date |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_write_date |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_write_date |
||||
|
msgid "Last Updated on" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_partner_id |
||||
|
msgid "Limit to a Single Partner" |
||||
|
msgstr "Limiter au contact" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_max_value |
||||
|
msgid "Maximum Voucher Value" |
||||
|
msgstr "Valeur de calcul maximum" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_min_value |
||||
|
msgid "Minimum Voucher Value" |
||||
|
msgstr "Valeur de calcul minimum" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_name |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_name |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.gift_coupon_form |
||||
|
msgid "Name" |
||||
|
msgstr "Nom" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_number |
||||
|
msgid "Number of Times Used" |
||||
|
msgstr "Nombre de fois" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model,name:website_coupon.model_res_partner |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_partner_coupon_partner_id |
||||
|
msgid "Partner" |
||||
|
msgstr "Contact" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: selection:gift.coupon,type:0 |
||||
|
msgid "Percentage" |
||||
|
msgstr "Pourcentage" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: code:addons/website_coupon/models/gift_voucher.py:77 |
||||
|
#, python-format |
||||
|
msgid "Please check the voucher value" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.cart_lines_extended |
||||
|
msgid "Price" |
||||
|
msgstr "Prix" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.gift_coupon_form |
||||
|
msgid "Pricing" |
||||
|
msgstr "Montant" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: selection:gift.voucher,voucher_type:0 |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_product_id |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.cart_lines_extended |
||||
|
msgid "Product" |
||||
|
msgstr "Article" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: selection:gift.voucher,voucher_type:0 |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_voucher_product_categ |
||||
|
msgid "Product Category" |
||||
|
msgstr "Catégorie d'articles" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.cart_lines_extended |
||||
|
msgid "Quantity" |
||||
|
msgstr "Quantité" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_start_date |
||||
|
msgid "Start Date" |
||||
|
msgstr "Débute le" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.voucher_code |
||||
|
msgid "The discount amount is too large" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.voucher_code |
||||
|
msgid "This gift code is not available" |
||||
|
msgstr "Ce code n'est pas valable" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_total_avail |
||||
|
msgid "Total Available" |
||||
|
msgstr "Quantité totale disponible" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_limit |
||||
|
msgid "Total Available For Each User" |
||||
|
msgstr "Quantité maxi par personne" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_type |
||||
|
msgid "Type" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_voucher |
||||
|
msgid "Voucher" |
||||
|
msgstr "Autorisation" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.voucher_code |
||||
|
msgid "Voucher Code" |
||||
|
msgstr "Code promo" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model.fields,field_description:website_coupon.field_gift_coupon_voucher_val |
||||
|
msgid "Voucher Value" |
||||
|
msgstr "Valeur de calcul" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.ui.view,arch_db:website_coupon.voucher_code |
||||
|
msgid "code..." |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model,name:website_coupon.model_gift_coupon |
||||
|
msgid "gift.coupon" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model,name:website_coupon.model_gift_voucher |
||||
|
msgid "gift.voucher" |
||||
|
msgstr "" |
||||
|
|
||||
|
#. module: website_coupon |
||||
|
#: model:ir.model,name:website_coupon.model_partner_coupon |
||||
|
msgid "partner.coupon" |
||||
|
msgstr "" |
||||
|
|
||||
|
|
@ -0,0 +1,22 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################# |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2019-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: LINTO C T (odoo@cybrosys.com) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################# |
||||
|
from . import gift_voucher |
@ -0,0 +1,88 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
############################################################################## |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# Copyright (C) 2018-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: LINTO C T(<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 |
||||
|
# GENERAL PUBLIC LICENSE (LGPL v3) along with this program. |
||||
|
# If not, see <https://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
############################################################################## |
||||
|
import string |
||||
|
import random |
||||
|
from odoo import models, fields, api, _ |
||||
|
from datetime import datetime,date |
||||
|
from odoo.exceptions import UserError |
||||
|
|
||||
|
|
||||
|
class GiftVoucher(models.Model): |
||||
|
_name = 'gift.voucher' |
||||
|
|
||||
|
name = fields.Char(string="Name", required=True) |
||||
|
voucher_type = fields.Selection( |
||||
|
selection=[ |
||||
|
('product', 'Product'), |
||||
|
('category', 'Product Category'), |
||||
|
('all', 'All Products'), |
||||
|
], string="Applicable on ", default='product' |
||||
|
) |
||||
|
product_id = fields.Many2one('product.product', string="Product") |
||||
|
product_categ = fields.Many2one('product.category', string="Product Category") |
||||
|
min_value = fields.Integer(string="Minimum Voucher Value", required=True) |
||||
|
max_value = fields.Integer(string="Maximum Voucher Value", required=True) |
||||
|
expiry_date = fields.Date(string="Expiry Date", required=True) |
||||
|
|
||||
|
|
||||
|
class GiftCoupon(models.Model): |
||||
|
_name = 'gift.coupon' |
||||
|
|
||||
|
def get_code(self): |
||||
|
size = 7 |
||||
|
chars = string.ascii_uppercase + string.digits |
||||
|
return ''.join(random.choice(chars) for _ in range(size)) |
||||
|
|
||||
|
_sql_constraints = [ |
||||
|
('name_uniq', 'unique (code)', "Code already exists !"), |
||||
|
] |
||||
|
|
||||
|
name = fields.Char(string="Name", required=True) |
||||
|
code = fields.Char(string="Code", default=get_code) |
||||
|
voucher = fields.Many2one('gift.voucher', string="Voucher", required=True) |
||||
|
start_date = fields.Date(string="Start Date") |
||||
|
end_date = fields.Date(string="End Date") |
||||
|
partner_id = fields.Many2one('res.partner', string="Limit to a Single Partner") |
||||
|
limit = fields.Integer(string="Total Available For Each User", default=1) |
||||
|
total_avail = fields.Integer(string="Total Available", default=1) |
||||
|
voucher_val = fields.Float(string="Voucher Value") |
||||
|
type = fields.Selection([ |
||||
|
('fixed', 'Fixed Amount'), |
||||
|
('percentage', 'Percentage'), |
||||
|
], store=True, default='fixed') |
||||
|
|
||||
|
@api.onchange('voucher_val') |
||||
|
def check_val(self): |
||||
|
if self.voucher_val > self.voucher.max_value or self.voucher_val < self.voucher.min_value: |
||||
|
raise UserError(_("Please check the voucher value")) |
||||
|
|
||||
|
|
||||
|
class CouponPartner(models.Model): |
||||
|
_name = 'partner.coupon' |
||||
|
|
||||
|
partner_id = fields.Many2one('res.partner', string="Partner") |
||||
|
coupon = fields.Char(string="Coupon Applied") |
||||
|
number = fields.Integer(string="Number of Times Used") |
||||
|
|
||||
|
|
||||
|
class PartnerExtended(models.Model): |
||||
|
_inherit = 'res.partner' |
||||
|
|
||||
|
applied_coupon = fields.One2many('partner.coupon', 'partner_id', string="Coupons Applied") |
|
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 61 KiB |