@ -0,0 +1,42 @@ |
|||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg |
|||
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html |
|||
:alt: License: AGPL-3 |
|||
|
|||
Pos Invoice Register Payment. |
|||
============================= |
|||
'This module will help you create payments in customer list and register payment for invoices' |
|||
|
|||
Company |
|||
------- |
|||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
Credits |
|||
------- |
|||
* Developer:(V15) Hafeesul Ali, Contact: odoo@cybrosys.com |
|||
|
|||
Contacts |
|||
-------- |
|||
* Mail Contact : odoo@cybrosys.com |
|||
* Website : https://cybrosys.com |
|||
|
|||
License |
|||
------- |
|||
AFFERO GENERAL PUBLIC LICENSE v3.0 (AGPL-3) |
|||
(https://www.gnu.org/licenses/agpl-3.0-standalone.html) |
|||
|
|||
Bug Tracker |
|||
----------- |
|||
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. |
|||
|
|||
Maintainer |
|||
========== |
|||
.. image:: https://cybrosys.com/images/logo.png |
|||
:target: https://cybrosys.com |
|||
|
|||
This module is maintained by Cybrosys Technologies. |
|||
|
|||
For support and more information, please visit `Our Website <https://cybrosys.com/>`__ |
|||
|
|||
Further information |
|||
=================== |
|||
HTML Description: `<static/description/index.html>`__ |
@ -0,0 +1,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Hafeesul Ali (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,57 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Hafeesul Ali (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': 'Pos Invoice Register Payment', |
|||
'version': '15.0.1.0.0', |
|||
'category': 'Point of Sale', |
|||
'summary': 'Create payment and register payment for invoice', |
|||
'description': 'This module will help you create payments in customer list' |
|||
' and register payment for invoices', |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
'website': 'https://www.cybrosys.com', |
|||
'depends': ['base', 'point_of_sale'], |
|||
'assets': { |
|||
'point_of_sale.assets': [ |
|||
'pos_invoice_payment/static/src/scss/invoice_list.scss', |
|||
], |
|||
'web.assets_backend': [ |
|||
'pos_invoice_payment/static/src/js/pos_clientline.js', |
|||
'pos_invoice_payment/static/src/js/payment_popup.js', |
|||
'pos_invoice_payment/static/src/js/button_invoice_list.js', |
|||
'pos_invoice_payment/static/src/js/invoicing.js', |
|||
], |
|||
'web.assets_qweb': [ |
|||
'pos_invoice_payment/static/src/xml/ClientLine.xml', |
|||
'pos_invoice_payment/static/src/xml/ClientListScreen.xml', |
|||
'pos_invoice_payment/static/src/xml/' |
|||
'CreatePaymentPopup_templates.xml', |
|||
'pos_invoice_payment/static/src/xml/InvoicingButton_templates.xml', |
|||
'pos_invoice_payment/static/src/xml/InvoicingScreen_templates.xml', |
|||
]}, |
|||
'images': ['static/description/banner.jpg'], |
|||
'license': 'AGPL-3', |
|||
'installable': True, |
|||
'auto_install': False, |
|||
'application': False, |
|||
} |
@ -0,0 +1,6 @@ |
|||
## Module <pos_invoice_payment> |
|||
|
|||
#### 25.10.2023 |
|||
#### Version 15.0.1.0.0 |
|||
#### ADD |
|||
- Initial commit for Pos Invoice Register Payment |
@ -0,0 +1,24 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Hafeesul Ali (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 account_journal |
|||
from . import account_move |
|||
from . import account_payment |
@ -0,0 +1,40 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Hafeesul Ali (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, models |
|||
|
|||
|
|||
class AccountJournal(models.Model): |
|||
"""This class represents an inherits model for account journals in Odoo. |
|||
It inherits from the 'account.journal' model and adds a method |
|||
""" |
|||
_inherit = "account.journal" |
|||
|
|||
@api.model |
|||
def get_journal(self): |
|||
"""Method to get available journals |
|||
Returns: |
|||
dict:A dictionary of journal id and name. |
|||
""" |
|||
journal_list = [{"id": journal.id, "name": journal.name} for journal in |
|||
self.search(['|', ('type', '=', 'bank'), |
|||
('type', '=', 'cash')])] |
|||
return journal_list |
@ -0,0 +1,73 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Hafeesul Ali (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 AccountMove(models.Model): |
|||
"""This class represents an inherits model for account move. |
|||
It inherits from the 'account.move' model and adds methods |
|||
""" |
|||
_inherit = "account.move" |
|||
|
|||
@api.model |
|||
def get_invoices(self): |
|||
"""Method to get invoice |
|||
Returns: |
|||
dict:A dictionary of invoice id,payment reference,partner name, |
|||
total amount,amount residual,state and payment state |
|||
""" |
|||
invoice_list = [ |
|||
{ |
|||
'invoice_id': record.id, |
|||
'payment_reference': record.payment_reference, |
|||
'partner_id': record.partner_id.name, |
|||
'amount_total': record.amount_total, |
|||
'amount_residual': record.amount_residual, |
|||
'state': record.state, |
|||
'payment_state': record.payment_state |
|||
} |
|||
for record in self.search([('move_type', '=', 'out_invoice')]) |
|||
] |
|||
return invoice_list |
|||
|
|||
@api.model |
|||
def register_payment(self, *args): |
|||
"""Method to register payment, |
|||
Args: |
|||
*args(int):Id of record to register payment. |
|||
""" |
|||
invoice_id = \ |
|||
self.browse(*args).action_register_payment()['context'][ |
|||
'active_ids'][ |
|||
0] |
|||
self.env['account.payment.register']. \ |
|||
with_context(active_model='account.move', active_ids=invoice_id). \ |
|||
create({'payment_date': fields.date.today()}). \ |
|||
action_create_payments() |
|||
|
|||
@api.model |
|||
def post_invoice(self, *args): |
|||
"""Method to confirm non posted invoices, |
|||
Args: |
|||
*args(int):Id of record to post journal. |
|||
""" |
|||
self.browse(*args).action_post() |
@ -0,0 +1,46 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################### |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Hafeesul Ali (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, models |
|||
|
|||
|
|||
class AccountPayment(models.Model): |
|||
"""This class represents an inherits model for account payment. |
|||
It inherits from the 'account.payment' model and adds a method |
|||
""" |
|||
_inherit = "account.payment" |
|||
|
|||
@api.model |
|||
def create_payment(self, *args): |
|||
"""Method to create payment |
|||
Args: |
|||
*args(tuple): A tuple of dictionary that contains journal id , |
|||
partner id,currency id,amount. |
|||
""" |
|||
payment = self.create({ |
|||
'journal_id': int(args[0]['journal_id']), |
|||
'partner_id': int(args[0]['partner_id']), |
|||
'currency_id': int(args[0]['currency_id']), |
|||
'amount': int(args[0]['amount']) |
|||
}) |
|||
payment.action_post() |
|||
if payment: |
|||
return True |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 196 KiB |
After Width: | Height: | Size: 157 KiB |
After Width: | Height: | Size: 167 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 258 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 8.4 KiB |
@ -0,0 +1,673 @@ |
|||
<div class="container" style="padding: 1rem !important; margin-bottom: 1rem !important;"> |
|||
<!-- TITLE BAR --> |
|||
|
|||
<div class="row"> |
|||
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between" |
|||
style="border-bottom: 1px solid #d5d5d5;"> |
|||
<div class="my-3"> |
|||
<img src="./assets/icons/logo.png" style="width: auto !important; height: 40px !important;"> |
|||
</div> |
|||
<div class="my-3 d-flex align-items-center"> |
|||
<div |
|||
style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;"> |
|||
<i class="fa fa-check mr-1"></i>Community |
|||
</div> |
|||
<div |
|||
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;"> |
|||
<i class="fa fa-check mr-1"></i>Enterprise |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF TITLE BAR --> |
|||
|
|||
<!-- APP HERO --> |
|||
<div class="container" style="padding: 0rem 1.5rem 4rem !important"> |
|||
<div class="row" style="height: 900px !important;"> |
|||
<div class="col-sm-12 col-md-12 col-lg-12" |
|||
style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;"> |
|||
<h1 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;"> |
|||
Pos Invoice Register Payment</h1> |
|||
<p |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important; font-size: 1.4rem !important; text-align: center !important;"> |
|||
Create Payments in Customer List and Register Payment for Invoices |
|||
</p> |
|||
<!-- END OF APP HERO --> |
|||
|
|||
<img src="./assets/screenshots/SChero.gif" class="img-responsive" width="100%" height="auto" /> |
|||
</div> |
|||
</div> |
|||
<!-- NAVIGATION SECTION --> |
|||
|
|||
<div class="row"> |
|||
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important"> |
|||
<h2 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> |
|||
<i class="fa fa-compass mr-2"></i>Explore this module |
|||
</h2> |
|||
</div> |
|||
<div class="col-md-6"> |
|||
<a href="#overview" style="text-decoration: none !important;"> |
|||
<div class="row" |
|||
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> |
|||
<div class="col-8"> |
|||
<h3 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> |
|||
Overview</h3> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> |
|||
Learn more about this module</p> |
|||
</div> |
|||
<div class="col-4 text-right d-flex justify-content-end align-items-center"> |
|||
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="col-md-6"> |
|||
<a href="#configuration" style="text-decoration: none !important;"> |
|||
<div class="row" |
|||
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> |
|||
<div class="col-8"> |
|||
<h3 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> |
|||
Configuration</h3> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> |
|||
View configurations for this module</p> |
|||
</div> |
|||
<div class="col-4 text-right d-flex justify-content-end align-items-center"> |
|||
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
|
|||
<div class="col-md-6"> |
|||
<a href="#features" style="text-decoration: none !important;"> |
|||
<div class="row" |
|||
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> |
|||
<div class="col-8"> |
|||
<h3 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> |
|||
Features</h3> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> |
|||
View features of this module</p> |
|||
</div> |
|||
<div class="col-4 text-right d-flex justify-content-end align-items-center"> |
|||
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-md-6"> |
|||
<a href="#screenshots" style="text-decoration: none !important;"> |
|||
<div class="row" |
|||
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;"> |
|||
<div class="col-8"> |
|||
<h3 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;"> |
|||
Screenshots</h3> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;"> |
|||
See key screenshots of this module</p> |
|||
</div> |
|||
<div class="col-4 text-right d-flex justify-content-end align-items-center"> |
|||
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i> |
|||
</div> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<!-- END OF NAVIGATION SECTION --> |
|||
|
|||
<!-- OVERVIEW SECTION --> |
|||
|
|||
<div class="row" id="overview"> |
|||
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> |
|||
<h2 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> |
|||
<i class="fa fa-pie-chart mr-2"></i>Overview |
|||
</h2> |
|||
</div> |
|||
|
|||
<div class="col-mg-12 pl-3"> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;"> |
|||
This module will help you create payments in customer list |
|||
and register payment for invoices |
|||
</p> |
|||
</div> |
|||
</div> |
|||
<!-- END OF OVERVIEW SECTION --> |
|||
|
|||
<!-- FEATURES SECTION --> |
|||
<div class="row" id="configuration"> |
|||
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> |
|||
<h2 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> |
|||
<i class="fa fa-pie-chart mr-2"></i>Configuration |
|||
</h2> |
|||
</div> |
|||
|
|||
<div class="col-mg-12 pl-3"> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;"> |
|||
No additional configuration required</p> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
<div class="row" id="features"> |
|||
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> |
|||
<h2 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> |
|||
<i class="fa fa-star mr-2"></i>Features |
|||
</h2> |
|||
</div> |
|||
|
|||
<div class="col-md-6 pl-3 py-3 d-flex"> |
|||
<div> |
|||
<img src="assets/icons/check.png"> |
|||
</div> |
|||
<div> |
|||
<h4 |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Community & Enterprise Support</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
Available in Odoo 15.0 Community and Enterprise.</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-md-6 pl-3 py-3 d-flex"> |
|||
<div> |
|||
<img src="assets/icons/check.png"> |
|||
</div> |
|||
<div> |
|||
<h4 |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Invoice Register payment</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
User can register payment through Pos</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-md-6 pl-3 py-3 d-flex"> |
|||
<div> |
|||
<img src="assets/icons/check.png"> |
|||
</div> |
|||
<div> |
|||
<h4 |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Create Payment</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
User can create payment for a customer from customer screen |
|||
in pos</p> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF FEATURES SECTION --> |
|||
|
|||
<!-- SCREENSHOTS SECTION --> |
|||
<div class="row" id="screenshots"> |
|||
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important"> |
|||
<h2 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;"> |
|||
<i class="fa fa-image mr-2"></i>Screenshots |
|||
</h2> |
|||
</div> |
|||
<div class="col-lg-12 my-2"> |
|||
<h4 class="my-2" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Create Payment</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
A payment can be created from customer screen |
|||
</p> |
|||
<img src="assets/screenshots/scimg01.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</div> |
|||
|
|||
<div class="col-lg-12 my-2"> |
|||
<h4 class="my-2" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Create payment Pop up</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
User can enter amount and select journal to create payment |
|||
</p> |
|||
<img src="assets/screenshots/scimg02.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</div> |
|||
|
|||
<div class="col-lg-12 my-2"> |
|||
<h4 class="mt-2" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Payments</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
Created payment can see in payments in invoicing |
|||
</p> |
|||
<img src="assets/screenshots/scimg03.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</div> |
|||
|
|||
<div class="col-lg-12 my-3"> |
|||
<h4 class="mt-3" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Invoicing Button</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
Invoicing Button to redirect into Invoicing Screen |
|||
</p> |
|||
|
|||
<img src="assets/screenshots/scimg04.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</div> |
|||
|
|||
<div class="col-lg-12 my-3"> |
|||
<h4 class="mt-3" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Invoicing Screen and Register Payment</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
Here we can see all invoices and user can register the payment |
|||
</p> |
|||
<img src="assets/screenshots/scimg05.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</div> |
|||
<div class="col-lg-12 my-3"> |
|||
<h4 class="mt-3" |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;"> |
|||
Invoices</h4> |
|||
<p |
|||
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> |
|||
We can see payment registered for invoice |
|||
</p> |
|||
|
|||
<img src="assets/screenshots/scimg06.png" class="img-responsive img-thumbnail border" width="100%" |
|||
height="auto" /> |
|||
</div> |
|||
</div> |
|||
<!-- END OF SCREENSHOTS SECTION --> |
|||
|
|||
<!-- SUGGESTED PRODUCTS --> |
|||
<div class="row"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center" |
|||
style="text-align: center; padding: 2.5rem 1rem !important;"> |
|||
<h2 style="color: #212529 !important;">Suggested Products</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" /> |
|||
|
|||
<div id="demo1" class="row carousel slide" data-ride="carousel"> |
|||
<!-- The slideshow --> |
|||
<div class="carousel-inner" style="padding: 30px;"> |
|||
<div class="carousel-item active" style="min-height: 198.656px;"> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/inventory_stock_dashboard_odoo/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" style="border-radius: 0px;" |
|||
src="./assets/modules/module01.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/inventory_barcode_scanning/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" style="border-radius: 0px;" |
|||
src="./assets/modules/module02.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/dynamic_accounts_report/" target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" style="border-radius: 0px;" |
|||
src="./assets/modules/module03.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item active" style="min-height: 198.656px;"> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/sale_discount_total/" target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" style="border-radius: 0px;" |
|||
src="./assets/modules/module04.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/employee_documents_expiry/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" style="border-radius: 0px;" |
|||
src="./assets/modules/module05.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/hr_payroll_account_community/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" style="border-radius: 0px;" |
|||
src="./assets/modules/module06.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- Left and right controls --> |
|||
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span |
|||
class="carousel-control-prev-icon"><i class="fa fa-chevron-left" |
|||
style="font-size:24px"></i></span> |
|||
</a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000"> |
|||
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right" |
|||
style="font-size:24px"></i></span> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF SUGGESTED PRODUCTS --> |
|||
|
|||
<!-- OUR SERVICES --> |
|||
<section class="container" style="margin-top: 6rem !important;"> |
|||
<div class="row"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> |
|||
<h2 style="color: #212529 !important;">Our Services</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" /> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Customization</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Implementation</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Support</h6> |
|||
</div> |
|||
|
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Hire |
|||
Odoo |
|||
Developer</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Integration</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Migration</h6> |
|||
</div> |
|||
|
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Consultancy</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Implementation</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Licensing Consultancy</h6> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<!-- END OF OUR SERVICES --> |
|||
|
|||
<!-- OUR INDUSTRIES --> |
|||
<section class="container" style="margin-top: 6rem !important;"> |
|||
<div class="row"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> |
|||
<h2 style="color: #212529 !important;">Our Industries</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" /> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Trading |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Easily procure |
|||
and |
|||
sell your products</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
POS |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Easy |
|||
configuration |
|||
and convivial experience</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Education |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
A platform for |
|||
educational management</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Manufacturing |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Plan, track and |
|||
schedule your operations</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
E-commerce & Website |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Mobile |
|||
friendly, |
|||
awe-inspiring product pages</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Service Management |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Keep track of |
|||
services and invoice</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Restaurant |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Run your bar or |
|||
restaurant methodically</p> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 |
|||
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Hotel Management |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
An |
|||
all-inclusive |
|||
hotel management application</p> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</section> |
|||
|
|||
<!-- END OF OUR INDUSTRIES --> |
|||
|
|||
<!-- FOOTER --> |
|||
<!-- Footer Section --> |
|||
<section class="container" style="margin: 5rem auto 2rem;"> |
|||
<div class="row" style="max-width:1540px;"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center"> |
|||
<h2 style="color: #212529 !important;">Need Help?</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" /> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- Contact Cards --> |
|||
<div class="row d-flex justify-content-center align-items-center" |
|||
style="max-width:1540px; margin: 0 auto 2rem auto;"> |
|||
|
|||
<div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; "> |
|||
|
|||
<div class="row mt-4"> |
|||
<div class="col-lg-6"> |
|||
<a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover" |
|||
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i |
|||
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a> |
|||
</div> |
|||
<div class="col-lg-6"> |
|||
<a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank" |
|||
class="btn btn-block mb-2 deep_hover" |
|||
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i |
|||
class="fa fa-whatsapp mr-2"></i>+91 86068 27707</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
<!-- End of Contact Cards --> |
|||
</section> |
|||
<!-- Footer --> |
|||
<section class="oe_container" style="padding: 2rem 3rem 1rem;"> |
|||
<div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; "> |
|||
<!-- Logo --> |
|||
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;"> |
|||
<img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" /> |
|||
</div> |
|||
<!-- End of Logo --> |
|||
<div class="col-lg-12"> |
|||
<hr |
|||
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;"> |
|||
<!-- End of Footer Section --> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
<!-- END OF FOOTER --> |
|||
|
|||
</div> |
@ -0,0 +1,63 @@ |
|||
odoo.define('pos_invoice_payment.invoice_button', function (require) { |
|||
'use strict'; |
|||
/** |
|||
* Import required modules. |
|||
*/ |
|||
const PosComponent = require('point_of_sale.PosComponent'); |
|||
const ProductScreen = require('point_of_sale.ProductScreen'); |
|||
const { useListener } = require("@web/core/utils/hooks"); |
|||
const Registries = require('point_of_sale.Registries'); |
|||
var core = require('web.core'); |
|||
var rpc = require('web.rpc'); |
|||
var QWeb = core.qweb; |
|||
/** |
|||
* Define the InvoicingButton class that extends PosComponent. |
|||
*/ |
|||
class InvoicingButton extends PosComponent { |
|||
/** |
|||
* This method is called when the component is set up. |
|||
* It sets up event listeners for the 'click' event. |
|||
*/ |
|||
setup() { |
|||
super.setup(); |
|||
useListener('click', this.onClick); |
|||
} |
|||
/** |
|||
* This method is triggered when the InvoicingButton is clicked. |
|||
* It sends an RPC request to fetch invoices and displays them on the InvoicingScreen. |
|||
*/ |
|||
async onClick() { |
|||
var self = this; |
|||
await self.rpc({ |
|||
model: 'account.move', |
|||
method: 'get_invoices', |
|||
}).then(function (result) { |
|||
self.showScreen('InvoicingScreen', { |
|||
invoices: result, |
|||
}); |
|||
}); |
|||
} |
|||
} |
|||
/** |
|||
* Define the template used for the InvoicingButton. |
|||
*/ |
|||
InvoicingButton.template = 'InvoicingButton'; |
|||
/** |
|||
* Add the InvoicingButton as a control button to the ProductScreen. |
|||
* It will be displayed conditionally based on whether 'this.env.pos' is truthy. |
|||
*/ |
|||
ProductScreen.addControlButton({ |
|||
component: InvoicingButton, |
|||
condition: function () { |
|||
return this.env.pos; |
|||
}, |
|||
}); |
|||
/** |
|||
* Add the InvoicingButton to the list of registered components. |
|||
*/ |
|||
Registries.Component.add(InvoicingButton); |
|||
/** |
|||
* Export the component name |
|||
*/ |
|||
return `InvoicingButton`; |
|||
}); |
@ -0,0 +1,75 @@ |
|||
odoo.define('pos_invoice_payment.InvoicingScreen', function (require) { |
|||
'use strict'; |
|||
/** |
|||
* Import required modules. |
|||
*/ |
|||
const PosComponent = require('point_of_sale.PosComponent'); |
|||
const ProductScreen = require('point_of_sale.ProductScreen'); |
|||
const Registries = require('point_of_sale.Registries'); |
|||
var rpc = require('web.rpc'); |
|||
var core = require('web.core'); |
|||
const { onMounted, onWillUnmount, useState } = owl; |
|||
/** |
|||
* Define the InvoicingScreen class that extends PosComponent. |
|||
*/ |
|||
class InvoicingScreen extends PosComponent { |
|||
/** |
|||
* This method is called when the component is set up. |
|||
* It can be used to perform setup tasks. |
|||
*/ |
|||
setup() { |
|||
super.setup(); |
|||
} |
|||
/** |
|||
* This method is called when the 'back' button is clicked. |
|||
* It navigates back to the ProductScreen. |
|||
*/ |
|||
back() { |
|||
this.showScreen('ProductScreen'); |
|||
} |
|||
/** |
|||
* This method is called when the 'register payment' button is clicked. |
|||
* It sends an RPC request to register a payment for the selected data_id (invoice). |
|||
* After successful registration, it navigates back to the ProductScreen. |
|||
* @param {integer} data_id - The ID of the invoice to register payment for. |
|||
*/ |
|||
registerPayment(data_id) { |
|||
var self = this; |
|||
this.rpc({ |
|||
model: "account.move", |
|||
method: "register_payment", |
|||
args: [data_id], |
|||
}).then(function (result) { |
|||
self.showScreen('ProductScreen', {}); |
|||
}); |
|||
} |
|||
/** |
|||
* This method is called when the 'Confirm' button is clicked. |
|||
* It sends an RPC request to post the invoice for the selected data_id. |
|||
* After successful confirmation, it navigates back to the ProductScreen. |
|||
* @param {integer} data_id - The ID of the invoice to confirm. |
|||
*/ |
|||
Confirm(data_id) { |
|||
var self = this; |
|||
this.rpc({ |
|||
model: "account.move", |
|||
method: "post_invoice", |
|||
args: [data_id], |
|||
}).then(function (result) { |
|||
self.showScreen('ProductScreen', {}); |
|||
}); |
|||
} |
|||
} |
|||
/** |
|||
* Define the template used for the InvoicingScreen. |
|||
*/ |
|||
InvoicingScreen.template = 'InvoicingScreen'; |
|||
/** |
|||
* Add the InvoicingScreen to the list of registered components. |
|||
*/ |
|||
Registries.Component.add(InvoicingScreen); |
|||
/** |
|||
* Export the InvoicingScreen class. |
|||
*/ |
|||
return InvoicingScreen; |
|||
}); |
@ -0,0 +1,62 @@ |
|||
/**@odoo-module **/ |
|||
import AbstractAwaitablePopup from "point_of_sale.AbstractAwaitablePopup"; |
|||
import Registries from "point_of_sale.Registries"; |
|||
var core = require('web.core'); |
|||
/** |
|||
* This class represents a popup for creating a payment in the Point of Sale module. |
|||
* It extends the AbstractAwaitablePopup class, which provides the basic structure and functionalities of a popup. |
|||
*/ |
|||
class CreatePaymentPopup extends AbstractAwaitablePopup { |
|||
setup() { |
|||
super.setup(); |
|||
} |
|||
/** |
|||
* This method is triggered when the 'confirm' button is clicked. |
|||
* It collects the input values from the popup, such as partner_id, currency_id, amount, and journal_id, |
|||
* and sends an RPC request to create a payment using the provided data. |
|||
* After processing the request, it triggers the "close-popup" event to close the popup. |
|||
* @param {Object} ev - The event object containing the input values from the popup. |
|||
*/ |
|||
async confirm(ev) { |
|||
var self=this; |
|||
let partner_id = ev['partner_id']; |
|||
let currency_id = ev['currency_id']; |
|||
let amount = this.__owl__.pvnode.elm.querySelector("#amount").value |
|||
let journal_id = this.__owl__.pvnode.elm.querySelector("#journal").value |
|||
if (amount< 0) { |
|||
this.__owl__.pvnode.elm.querySelector('#positive_validation').style.display='block' |
|||
} else { |
|||
var values = {}; |
|||
if (partner_id) { |
|||
values["partner_id"] = partner_id; |
|||
} |
|||
if (journal_id) { |
|||
values["journal_id"] = journal_id; |
|||
} |
|||
if (currency_id) { |
|||
values["currency_id"] = currency_id; |
|||
} |
|||
if (amount) { |
|||
values["amount"] = amount; |
|||
} |
|||
this.rpc({ |
|||
model: "account.payment", |
|||
method: "create_payment", |
|||
args: [values], |
|||
}).then(function (result) { |
|||
if(result){ |
|||
self.showNotification(_.str.sprintf(self.env._t('Created Successfully')),2000); |
|||
self.trigger("close-popup", { |
|||
popupId: self.props.id, |
|||
response: { |
|||
confirmed: false, |
|||
payload: null, |
|||
}, |
|||
}); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
CreatePaymentPopup.template = "CreatePaymentPopup"; |
|||
Registries.Component.add(CreatePaymentPopup); |
@ -0,0 +1,49 @@ |
|||
odoo.define('pos_invoice_payment.ClientLine', function (require) { |
|||
'use strict'; |
|||
/** |
|||
* Import required modules. |
|||
*/ |
|||
const ClientLine = require('point_of_sale.ClientLine'); |
|||
const Registries = require('point_of_sale.Registries'); |
|||
/** |
|||
* Extend the ClientLine component with additional functionality to show a popup for creating a payment. |
|||
* @param {Class} ClientLine - The original ClientLine class to be extended. |
|||
*/ |
|||
const PosClientLine = (ClientLine) => |
|||
class extends ClientLine { |
|||
/** |
|||
* This method is called when the 'showPop' event is triggered. |
|||
* It extracts the partner_id from the event's target element and sends an RPC request to fetch journals. |
|||
* Then, it shows the 'CreatePaymentPopup' with the fetched journals and other relevant data. |
|||
* @param {Object} ev - The event object containing information about the event. |
|||
*/ |
|||
async showPop(ev) { |
|||
var partner_id = ev.target.parentElement.parentElement.attributes[1].value; |
|||
var self = this; |
|||
var journal_length = []; |
|||
await this.rpc({ |
|||
model: "account.journal", |
|||
method: "get_journal", |
|||
}).then(function (result) { |
|||
$.each(result, function (index, name) { |
|||
journal_length.push(index); |
|||
}); |
|||
self.showPopup("CreatePaymentPopup", { |
|||
title: ("Create Payment"), |
|||
confirmText: ("Exit"), |
|||
journals: result, |
|||
journal_length: journal_length, |
|||
partner_id: partner_id |
|||
}); |
|||
}); |
|||
} |
|||
}; |
|||
/** |
|||
* Extend the original ClientLine component with the new functionality provided by PosClientLine. |
|||
*/ |
|||
Registries.Component.extend(ClientLine, PosClientLine); |
|||
/** |
|||
* Export the extended ClientLine component. |
|||
*/ |
|||
return ClientLine; |
|||
}); |
@ -0,0 +1,49 @@ |
|||
.invoice-list{ |
|||
font-size: 16px; |
|||
width: 100%; |
|||
} |
|||
|
|||
.invoice-list th, |
|||
.invoice-list td { |
|||
padding: 12px 8px; |
|||
} |
|||
|
|||
.invoice-list tr{ |
|||
transition: all 150ms linear; |
|||
background: rgb(230,230,230); |
|||
} |
|||
|
|||
.invoice-list thead > tr, |
|||
.invoice-list tr:nth-child(even) { |
|||
background: rgb(247,247,247); |
|||
} |
|||
|
|||
#journal{ |
|||
display: block; |
|||
border: 0; |
|||
background: white; |
|||
border-radius: 5px; |
|||
width: 70%; |
|||
padding: 0.375rem 2.25rem 0.375rem 0.75rem; |
|||
font-size: 1rem; |
|||
font-weight: 400; |
|||
line-height: 1.5; |
|||
-webkit-appearance: none; |
|||
-moz-appearance: none; |
|||
appearance: none; |
|||
background-repeat: no-repeat; |
|||
background-position: right 0.75rem center; |
|||
background-size: 16px 12px; |
|||
transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out; |
|||
} |
|||
|
|||
#amount{ |
|||
min-height: 18px; |
|||
max-height: 37px !important; |
|||
margin-top: 5px; |
|||
overflow: hidden; |
|||
width: 70%; |
|||
max-height: 6%; |
|||
border-radius: 6px; |
|||
height: 42%; |
|||
} |
@ -0,0 +1,9 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="ClientLine" t-inherit="point_of_sale.ClientLine" t-inherit-mode="extension" owl="1"> |
|||
<xpath expr="//td[hasclass('client-line-last-column-placeholder')]" position="before"> |
|||
<td><div class="control-button" style="width: 154px;" t-on-click.stop="(ev) => this.showPop(ev)"><i class="fa fa-credit-card" role="img" aria-label="Products" title="Payment"/> |
|||
Create Payment</div></td> |
|||
</xpath> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,10 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="ClientLineScreen" t-inherit="point_of_sale.ClientListScreen" |
|||
t-inherit-mode="extension" owl="1"> |
|||
<xpath expr="//th[hasclass('client-line-last-column-placeholder')]" |
|||
position="before"> |
|||
<th></th> |
|||
</xpath> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,51 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="CreatePaymentPopup" owl="1"> |
|||
<div role="dialog" class="modal-dialog"> |
|||
<div class="popup"> |
|||
<p class="title"> |
|||
Create Payment |
|||
</p> |
|||
<div class="field_div" |
|||
style="display:flex; margin-bottom: 15px;"> |
|||
<label for="amount" class="field_label" |
|||
style="margin-right:10px; margin-top: 10px; width: 120px; display: inline-block; text-align: left; margin-left: 2%;">Amount</label> |
|||
<input type="number" name="amount" class="field_input" |
|||
id="amount" style="overflow: hidden; width: 70%;"/> |
|||
</div> |
|||
<p style="color:red; font-size: 17px; display:none;" id="positive_validation">please enter positive number</p> |
|||
<div class="field_div" |
|||
style="display:flex; margin-bottom: 15px;"> |
|||
<label for="category" |
|||
class="field_label" |
|||
style="margin-right:10px; margin-top: 10px; width: 120px; display: inline-block; text-align: left;margin-left: 2%;">Journal</label> |
|||
<select name="category" class="form-control" |
|||
id="journal" > |
|||
<t t-foreach="props.journal_length" |
|||
t-as="journal_length" |
|||
t-key="journal_length"> |
|||
<t t-set="index" |
|||
t-value="journal_length"/> |
|||
<option t-att-value="props.journals[index]['id']" |
|||
t-att-title="props.journals[index]['name']"> |
|||
<t t-esc="props.journals[index]['name']"/> |
|||
</option> |
|||
</t> |
|||
</select> |
|||
</div> |
|||
|
|||
<t t-set="currency_id" t-value="env.pos.company.currency_id[0]"/> |
|||
<t t-set="id" t-value="props.partner_id"/> |
|||
<t t-set="id_dict" t-value="{'partner_id':id,'currency_id':currency_id}"/> |
|||
<div class="footer"> |
|||
<div class="button highlight confirm" t-on-click="() => this.confirm(id_dict)"> |
|||
Confirm |
|||
</div> |
|||
<div class="button cancel" t-on-click="cancel"> |
|||
Cancel |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,10 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="InvoicingButton" owl="1"> |
|||
<div class="control-button"> |
|||
<i class="fa fa-list" role="img" aria-label="Listview" |
|||
title="Listview"/> |
|||
Invoicing |
|||
</div> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,77 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="InvoicingScreen" owl="1"> |
|||
<div class="clientlist-screen screen"> |
|||
<div class="screen-content"> |
|||
<div class="top-content"> |
|||
<div class="button back" t-on-click="back"> |
|||
Back |
|||
</div> |
|||
</div> |
|||
<section class="full-content"> |
|||
<div class="client-window"> |
|||
<section> |
|||
<div> |
|||
<div class="scrollable-y" style="overflow-y: scroll;height: 100vh;"> |
|||
<table class="table table-striped invoice-list"> |
|||
<thead> |
|||
<tr> |
|||
<th> Invoice </th> |
|||
<th> Customer Ref </th> |
|||
<th> Total Amount </th> |
|||
<th> Due Amount </th> |
|||
<th> State </th> |
|||
<th> Payment State </th> |
|||
<th> </th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
<t t-foreach="props.invoices" |
|||
t-as="invoice" |
|||
t-key="invoice.invoice_id"> |
|||
<tr> |
|||
<t t-if="invoice.payment_reference != false"> |
|||
<td><t t-esc="invoice.payment_reference"/></td> |
|||
</t> |
|||
<t t-else=""> |
|||
<div> </div> |
|||
</t> |
|||
<td><t t-esc="invoice.partner_id"/></td> |
|||
<td><t t-esc="invoice.amount_total"/></td> |
|||
<td><t t-esc="invoice.amount_residual"/></td> |
|||
<td><t t-esc="invoice.state"/></td> |
|||
<td><t t-esc="invoice.payment_state"/></td> |
|||
<t t-set="data_id" t-value="invoice.invoice_id"/> |
|||
<t t-if="invoice.state == 'draft'"> |
|||
<td> |
|||
<div class="control-button" t-on-click="() => this.Confirm(data_id)"> |
|||
<i class="fa fa-money" role="img" aria-label="Listview" title="Listview"/> |
|||
Confirm |
|||
</div> |
|||
</td> |
|||
</t> |
|||
|
|||
<t t-if="invoice.payment_state != 'paid' and invoice.state == 'posted'"> |
|||
<td> |
|||
<div class="control-button" t-on-click="() => this.registerPayment(data_id)"> |
|||
<i class="fa fa-money" role="img" aria-label="Listview" title="Listview"/> |
|||
Register Payment |
|||
</div> |
|||
</td> |
|||
</t> |
|||
<t t-else=""> |
|||
<div> </div> |
|||
</t> |
|||
</tr> |
|||
</t> |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
</div> |
|||
</section> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</templates> |