diff --git a/customer_credit_payment_website/README.rst b/customer_credit_payment_website/README.rst
new file mode 100644
index 000000000..33c5b1930
--- /dev/null
+++ b/customer_credit_payment_website/README.rst
@@ -0,0 +1,48 @@
+.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
+ :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+
+Customer Credit Payment In Website
+==================================
+* Assign the credit amount from the website and the sales
+
+Configuration
+============
+ - www.odoo.com/documentation/18.0/setup/install.html
+ - Install our custom addon
+
+Company
+-------
+* `Cybrosys Techno Solutions `__
+
+License
+-------
+Affero General Public License v3.0 (AGPL v3)
+(https://www.gnu.org/licenses/agpl-3.0-standalone.html)
+
+Credits
+-------
+* Developer: (V18) NIHALA KP, 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
+--------
+This module is maintained by Cybrosys Technologies.
+
+For support and more information, please visit https://www.cybrosys.com
+
+.. image:: https://cybrosys.com/images/logo.png
+ :target: https://cybrosys.com"
+
+Further Information
+-----------
+HTML Description: ``__
diff --git a/customer_credit_payment_website/__init__.py b/customer_credit_payment_website/__init__.py
new file mode 100644
index 000000000..1be308a9b
--- /dev/null
+++ b/customer_credit_payment_website/__init__.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2023-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from . import controllers
+from . import models
+
+from odoo.addons.payment import setup_provider, reset_payment_provider
+
+
+def post_init_hook(env):
+ setup_provider(env, 'credit_pay')
+
+
+def uninstall_hook(env):
+ reset_payment_provider(env, 'credit_pay')
diff --git a/customer_credit_payment_website/__manifest__.py b/customer_credit_payment_website/__manifest__.py
new file mode 100644
index 000000000..eb18b355f
--- /dev/null
+++ b/customer_credit_payment_website/__manifest__.py
@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+{
+ 'name': 'Customer Credit Payment In Website',
+ 'version': '18.0.1.0.0',
+ 'category': 'Website',
+ 'summary': """Assign the credit amount from the website and the sales""",
+ 'description': 'This is a module used to assign the credit to the customer'
+ ' in the website and also from the sales.',
+ 'author': 'Cybrosys Techno Solutions',
+ 'company': 'Cybrosys Techno Solutions',
+ 'maintainer': 'Cybrosys Techno Solutions',
+ 'website': "https://www.cybrosys.com",
+ 'depends': ['sale_management', 'purchase',
+ 'product', 'website_sale', 'payment', 'payment_demo'
+ ],
+ 'data': [
+ 'security/ir.model.access.csv',
+ 'security/website_credit_payment_security.xml',
+ 'data/website_data.xml',
+ 'data/product_data.xml',
+ 'views/credit_amount_views.xml',
+ 'views/credit_details_views.xml',
+ 'views/credit_payment_views.xml',
+ 'views/sale_views.xml',
+ 'views/sale_order_views.xml',
+ 'views/res_partner_views.xml',
+ 'views/customer_credit_payment_website_templates.xml',
+ 'views/restrict_message_template.xml',
+ 'views/payment_demo_templates.xml',
+ 'views/payment_token_views.xml',
+ 'views/payment_transaction_views.xml',
+ 'data/payment_method_data.xml',
+ 'data/payment_provider_data.xml',
+ ],
+ 'post_init_hook': 'post_init_hook',
+ 'uninstall_hook': 'uninstall_hook',
+ 'assets': {
+ 'web.assets_frontend': [
+ 'customer_credit_payment_website/static/src/js/**/*',
+ ],
+ },
+ 'images': [
+ 'static/description/banner.jpg',
+ ],
+ 'license': 'AGPL-3',
+ 'installable': True,
+ 'auto_install': False,
+ 'application': True,
+}
diff --git a/customer_credit_payment_website/controllers/__init__.py b/customer_credit_payment_website/controllers/__init__.py
new file mode 100644
index 000000000..a06fe4d9c
--- /dev/null
+++ b/customer_credit_payment_website/controllers/__init__.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from . import customer_credit_payment_website
+from . import website_sale
diff --git a/customer_credit_payment_website/controllers/customer_credit_payment_website.py b/customer_credit_payment_website/controllers/customer_credit_payment_website.py
new file mode 100644
index 000000000..d795650a3
--- /dev/null
+++ b/customer_credit_payment_website/controllers/customer_credit_payment_website.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from odoo import http
+from odoo.http import request
+
+
+class CreditDetails(http.Controller):
+ """ Controllers to get the credit details and the credit amount of each
+ partner."""
+
+ @http.route('/credit/details', type='http', auth='public', website=True,
+ csrf=False)
+ def credit_details(self, **post):
+ """ Get the credit amount for each user and return the credit payment
+ page."""
+ credit_amount = request.env.user.credit_amount
+ return request.render(
+ 'customer_credit_payment_website.credit_payment_page',
+ {'credit_amount': credit_amount})
+
+ @http.route('/add/credit/balance', type='http', auth='public', website=True,
+ csrf=False)
+ def add_credit_balance(self, **post):
+ """ Add the credit amount from the website."""
+ return request.render(
+ 'customer_credit_payment_website.add_credit_payment_page')
+
+
+class PaymentCreditPayController(http.Controller):
+ _simulation_url = '/payment/credit_pay/simulate_payment'
+
+ @http.route('/payment/credit_pay/simulate_payment', type='json',
+ auth='public')
+ def credit_pay_simulate_payment(self, **data):
+ """ Simulate the response of a payment request.
+
+ :param dict data: The simulated notification data.
+ :return: None
+ """
+ return request.env[
+ 'payment.transaction'].sudo()._handle_notification_data(
+ 'credit_pay', data.get('args'))
diff --git a/customer_credit_payment_website/controllers/website_sale.py b/customer_credit_payment_website/controllers/website_sale.py
new file mode 100644
index 000000000..931a2c99d
--- /dev/null
+++ b/customer_credit_payment_website/controllers/website_sale.py
@@ -0,0 +1,146 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from datetime import datetime
+from odoo import http
+from odoo.http import request
+from odoo.addons.website_sale.controllers.main import WebsiteSale
+
+
+class WebsiteSaleInherit(WebsiteSale):
+ """Custom class inheriting from WebsiteSale to implement additional
+ features."""
+
+ @http.route(['/shop/cart'], type='http', auth="public", website=True,
+ sitemap=False)
+ def cart(self, **post):
+ """
+ Override of the controller for updating the product amount in the
+ shopping cart.
+ """
+ order = request.website.sale_get_order(force_create=True)
+ res_super = super(WebsiteSaleInherit, self).cart(**post)
+ amount = post.get('amount')
+ if amount:
+ product_id = request.env.ref(
+ 'customer_credit_payment_website.credit_product_0').id
+ order.update({
+ 'credit_amount_sale': amount,
+ 'order_line': [(5, 0, 0), (0, 0, {
+ 'product_id': product_id,
+ 'price_unit': amount,
+ 'tax_id': False,
+ })]
+ })
+ res_super.qcontext.update({
+ 'website_sale_order': order,
+ 'amount': amount,
+ })
+ return res_super
+
+ @http.route(['/shop/confirm_order'], type='http', auth="public",
+ website=True, sitemap=False)
+ def confirm_order(self, **post):
+ """ Override the function to update the amount for the credit amount
+ that purchase from the website."""
+ order = request.website.sale_get_order()
+ if not order:
+ return request.redirect('/shop')
+ product_id = request.env.ref(
+ 'customer_credit_payment_website.credit_product_0').id
+ if redirection := self._check_cart_and_addresses(order):
+ return redirection
+ order.order_line._compute_tax_id()
+ request.session['sale_last_order_id'] = order.id
+ request.website.sale_get_order()
+ extra_step = request.website.viewref('website_sale.extra_info')
+ if extra_step.active:
+ return request.redirect("/shop/extra_info")
+ if order.credit_amount_sale:
+ order.update({
+ 'order_line': [(5, 0, 0), (0, 0, {
+ 'product_id': product_id,
+ 'price_unit': order.credit_amount_sale,
+ })]
+ })
+ return request.redirect("/shop/payment")
+
+ @http.route(['/shop/confirmation'], type='http', auth="public",
+ website=True, sitemap=False)
+ def shop_payment_confirmation(self, **post):
+ """ End of checkout process controller. Confirmation is basically seeing
+ the status of a sale.order. """
+ sale_order_id = request.session.get('sale_last_order_id')
+ if not sale_order_id:
+ return request.redirect('/shop')
+ order = request.env['sale.order'].sudo().browse(sale_order_id)
+ user_id = request.env.user
+ partner = user_id.partner_id
+ order_amount_total = order.amount_total
+ payment_transaction = request.env['payment.transaction'].search(
+ [('reference', '=', order.name)])
+ payment_transaction_id = payment_transaction.provider_id
+ credit_product_id = request.env.ref(
+ 'customer_credit_payment_website.credit_product_0').id
+ credit_payment_provider_id = request.env.ref(
+ 'customer_credit_payment_website.payment_provider_credit').id
+ has_credit_product = any(
+ line.product_id.id == credit_product_id for line in
+ order.order_line)
+ if (has_credit_product and
+ payment_transaction_id.id != credit_payment_provider_id):
+ request.env['credit.amount'].create({
+ 'customer_id': partner.id,
+ 'amount': order_amount_total
+ })
+ elif (not has_credit_product and
+ payment_transaction_id.id == credit_payment_provider_id):
+ if order.amount_total < partner.credit_amount:
+ credit_detail = request.env['credit.details'].search(
+ [('customer_id', '=', partner.id)])
+ credit_detail.write({
+ 'debit_details_ids': [(0, 0, {
+ 'debit_amount': -order_amount_total,
+ 'approve_date': datetime.now(),
+ 'updated_amount':
+ -order_amount_total + credit_detail.debit_amount,
+ 'previous_debit_amount': credit_detail.debit_amount,
+ })]
+ })
+ elif order.amount_total > partner.credit_amount:
+ if not partner.allow_credit_amount:
+ return request.render(
+ 'customer_credit_payment_website.credit_error_details',
+ {'name': order.name})
+ else:
+ credit_detail = request.env['credit.details'].search(
+ [('customer_id', '=', partner.id)])
+ credit_detail.write({
+ 'debit_details_ids': [(0, 0, {
+ 'debit_amount': -order_amount_total,
+ 'approve_date': datetime.now(),
+ 'previous_debit_amount': credit_detail.debit_amount,
+ 'updated_amount':
+ -order_amount_total + credit_detail.debit_amount,
+ })]
+ })
+ values = self._prepare_shop_payment_confirmation_values(order)
+ return request.render("website_sale.confirmation", values)
diff --git a/customer_credit_payment_website/data/payment_method_data.xml b/customer_credit_payment_website/data/payment_method_data.xml
new file mode 100644
index 000000000..90c711a7e
--- /dev/null
+++ b/customer_credit_payment_website/data/payment_method_data.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ credit pay
+ credit_pay
+ True
+ 200
+
+ False
+ False
+
+
diff --git a/customer_credit_payment_website/data/payment_provider_data.xml b/customer_credit_payment_website/data/payment_provider_data.xml
new file mode 100644
index 000000000..308055108
--- /dev/null
+++ b/customer_credit_payment_website/data/payment_provider_data.xml
@@ -0,0 +1,21 @@
+
+
+
+
+ Credit payment
+ 45
+
+ credit_pay
+
+
+ True
+
+
+
+
diff --git a/customer_credit_payment_website/data/product_data.xml b/customer_credit_payment_website/data/product_data.xml
new file mode 100644
index 000000000..d1fc4204c
--- /dev/null
+++ b/customer_credit_payment_website/data/product_data.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+ Credit Product
+
+ service
+ 1.0
+ order
+ 1.0
+
+
+
+
+
+
+
+
diff --git a/customer_credit_payment_website/data/website_data.xml b/customer_credit_payment_website/data/website_data.xml
new file mode 100644
index 000000000..0661f4250
--- /dev/null
+++ b/customer_credit_payment_website/data/website_data.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Credit
+ /credit/details
+
+ 80
+
+
+
diff --git a/customer_credit_payment_website/doc/RELEASE_NOTES.md b/customer_credit_payment_website/doc/RELEASE_NOTES.md
new file mode 100644
index 000000000..3f8ca4115
--- /dev/null
+++ b/customer_credit_payment_website/doc/RELEASE_NOTES.md
@@ -0,0 +1,6 @@
+## Module
+
+#### 18.02.2025
+#### Version 18.0.1.0.0
+#### ADD
+- Initial commit for Customer Credit Payment In Website
diff --git a/customer_credit_payment_website/models/__init__.py b/customer_credit_payment_website/models/__init__.py
new file mode 100644
index 000000000..fd3bc765b
--- /dev/null
+++ b/customer_credit_payment_website/models/__init__.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from . import credit_amount
+from . import credit_details
+from . import credit_payment
+from . import payment_provider
+from . import payment_token
+from . import payment_transaction
+from . import res_partner
+from . import sale_order_line
diff --git a/customer_credit_payment_website/models/credit_amount.py b/customer_credit_payment_website/models/credit_amount.py
new file mode 100644
index 000000000..1ad197b0f
--- /dev/null
+++ b/customer_credit_payment_website/models/credit_amount.py
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from datetime import datetime
+from odoo import fields, models
+
+
+class CreditAmount(models.Model):
+ """
+ Model for managing credit amounts associated with customers.
+ """
+ _name = "credit.amount"
+ _description = "Credit Amount"
+ _rec_name = 'customer_id'
+
+ customer_id = fields.Many2one(
+ 'res.partner', string='Customer', required=1,
+ help='Reference to the associated customer/partner.')
+ amount = fields.Float(string="Amount",
+ help='The monetary amount associated with this '
+ 'record.')
+ approve_date = fields.Datetime(
+ 'Approve Date', default=datetime.today(),
+ help='Date and time when the record was approved.')
+ state = fields.Selection(
+ [('to_approve', 'Waiting for approve'), ('approved', 'Approved'), ],
+ string='Stage', readonly=True, copy=False,
+ index=True, tracking=3, default='to_approve',
+ help='Current stage of the record, indicating whether it is waiting '
+ 'for approval or already approved.')
+ hide_approve = fields.Boolean(
+ 'Approve', default=False, invisible="1",
+ help='Boolean field indicating whether the approval action should be '
+ 'hidden or visible.')
+
+ def action_approve(self):
+ """
+ Approves the credit amount and updates associated credit details.
+
+ :return: None
+ """
+ self.state = 'approved'
+ self.hide_approve = True
+ credit_details = self.env['credit.details'].search(
+ [('customer_id', '=', self.customer_id.id)])
+ if credit_details:
+ previous_amt = credit_details.credit_amount
+ credit_details.write({
+ 'updated_amount':self.amount,
+ '_is_amount_updated': False,
+ 'credit_details_ids': [(0, 0, {
+ 'amount': self.amount,
+ 'customer_id': credit_details.customer_id.id,
+ 'previous_credit_amount': previous_amt,
+ 'approve_date': self.approve_date,
+ 'updated_amount': self.amount + previous_amt,
+ 'credit_id': credit_details.id,
+
+ })]
+ })
+ else:
+ self.env['credit.details'].create({
+ 'customer_id': self.customer_id.id,
+ 'updated_amount': self.amount,
+ 'credit_details_ids': [(0, 0, {
+ 'customer_id': self.customer_id.id,
+ 'amount': self.amount,
+ 'previous_credit_amount': 0.0,
+ 'approve_date': self.approve_date,
+ 'updated_amount': self.amount, })]
+ })
diff --git a/customer_credit_payment_website/models/credit_details.py b/customer_credit_payment_website/models/credit_details.py
new file mode 100644
index 000000000..4e0ba06f0
--- /dev/null
+++ b/customer_credit_payment_website/models/credit_details.py
@@ -0,0 +1,149 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from datetime import datetime
+from odoo import fields, models
+
+
+class CreditDetails(models.Model):
+ """
+ Model for managing credit details associated with customers.
+ """
+ _name = "credit.details"
+ _description = "Credit Details"
+ _rec_name = 'customer_id'
+
+ credit_id = fields.Many2one(
+ 'credit.amount',
+ help='Reference to the associated credit amount record.')
+ customer_id = fields.Many2one(
+ 'res.partner', string='Customer',
+ help='Reference to the associated customer/partner.')
+ credit_amount = fields.Float(
+ "Credit", compute='_compute_credit_amount',
+ help='Representing the total credit amount associated with this '
+ 'record.')
+ debit_amount = fields.Float(
+ "Debit", compute='_compute_debit_amount',
+ help='Representing the total debit amount associated with this record.')
+ credit_details_amount = fields.Float(
+ "Credit Details", compute='_compute_credit_details_amount',
+ help='Representing the total credit details amount associated with '
+ 'this record.')
+ updated_amount = fields.Float(
+ "Update", help='Field used for updating the credit amount.')
+ credit_details_ids = fields.One2many(
+ 'credit.detail.lines', 'credit_id',
+ help='Credit detail lines associated with this record.')
+ debit_details_ids = fields.One2many(
+ 'debit.detail.lines', 'debit_id',
+ help='Debit detail lines associated with this record.')
+ _is_amount_updated = fields.Boolean(
+ string='to check whether the credit is updated with accounts')
+
+ def _compute_credit_amount(self):
+ """ Function to compute the credit amount """
+ for rec in self:
+ rec.credit_amount = 0.0
+ if rec.credit_details_ids:
+ rec.credit_amount = sum(
+ rec.credit_details_ids.mapped('amount'))
+
+ def _compute_debit_amount(self):
+ """"" Function to compute the debit amount """
+ for rec in self:
+ rec.debit_amount = 0.0
+ if rec.debit_details_ids:
+ rec.debit_amount = sum(
+ rec.debit_details_ids.mapped('debit_amount'))
+
+ def _compute_credit_details_amount(self):
+ """ Function to compute the credit details amount """
+ for rec in self:
+ rec.credit_details_amount = 0.0
+ rec.credit_details_amount = rec.credit_amount + rec.debit_amount
+
+ def _compute_amount_updated(self):
+ for rec in self:
+ if rec.credit_details_ids.mapped(
+ 'previous_credit_amount').pop() < rec.credit_details_amount:
+ rec._is_amount_updated = True
+
+ def action_update_account(self):
+ """ Function to update the amount in the account payment"""
+ self._is_amount_updated = True
+ return {
+ 'name': 'Credit Payment',
+ 'view_mode': 'form',
+ 'res_model': 'credit.payment',
+ 'type': 'ir.actions.act_window',
+ 'context': {'default_partner_id': self.customer_id.id,
+ 'default_credit_amount': self.credit_details_ids.mapped(
+ 'amount').pop(),
+ 'default_payment_journal': self.env[
+ 'account.journal'].search([('type', '=', 'bank')],
+ limit=1).id,
+ 'default_credit_detail_id': self.id,
+ },
+ 'target': 'new'
+ }
+
+
+class CreditDetailsLines(models.Model):
+ """ Model for managing credit detail lines associated with credit details"""
+ _name = "credit.detail.lines"
+ _description = "Credit Detail Lines"
+
+ credit_id = fields.Many2one('credit.details', string=" Credit Id",
+ help="Credit detail associate with this "
+ "record.")
+ customer_id = fields.Many2one('res.partner', string="Customer details",
+ help="Customer details")
+ amount = fields.Float(string='Amount',
+ help="Total credit amount associated with the "
+ "partner.")
+ previous_credit_amount = fields.Float(string='Previous Credit Amount',
+ help='The previous credit amount')
+ approve_date = fields.Datetime(string='Approve Date',
+ default=datetime.today(),
+ help='Approved date of the credit amount')
+ updated_amount = fields.Float(string='Updated Amount',
+ help='Updated amount')
+
+
+class DebitDetailsLines(models.Model):
+ """ Model for managing debit detail lines associated with credit details """
+ _name = "debit.detail.lines"
+ _description = "Debit Detail lines"
+
+ debit_id = fields.Many2one('credit.details', string=" Credit Id",
+ help="Credit detail associate with this record.")
+ customer_id = fields.Many2one('res.partner', string="Customer details",
+ help="Customer details")
+ debit_amount = fields.Float(string='Amount',
+ help="Total credit amount associated with the "
+ "partner.")
+ previous_debit_amount = fields.Float(string='Previous Debit Amount',
+ help='The previous credit amount')
+ approve_date = fields.Datetime('Approve Date', default=datetime.today(),
+ help='Approved date of the credit amount')
+ updated_amount = fields.Float(string='Updated Amount',
+ help='Updated amount')
diff --git a/customer_credit_payment_website/models/credit_payment.py b/customer_credit_payment_website/models/credit_payment.py
new file mode 100644
index 000000000..756aca493
--- /dev/null
+++ b/customer_credit_payment_website/models/credit_payment.py
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from odoo import fields, models
+from datetime import date
+
+
+class CreditPayment(models.TransientModel):
+ """
+ Transient Model for managing credit payments in the payment journal.
+ """
+ _name = "credit.payment"
+ _description = "Credit Payment"
+
+ payment_journal = fields.Many2one('account.journal',
+ string='Payment Journal', readonly=1,
+ help='Represents the payment journal '
+ 'associated with the record.')
+ credit_amount = fields.Float('Credit Amount',
+ help='Credit amount to update the journal')
+ partner_id = fields.Many2one('res.partner', help="customer value")
+ credit_detail_id = fields.Many2one('credit.details', help="credit details here")
+
+ def action_submit(self):
+ """
+ Create and submit an inbound payment for the current record.
+ Returns: account.payment: The newly created payment record.
+ """
+ payment_id = self.env['account.payment'].sudo().create({
+ 'payment_type': 'inbound',
+ 'payment_method_id': self.env.ref(
+ 'account.account_payment_method_manual_in').id,
+ 'payment_method_line_id': self.env.ref(
+ 'account.account_payment_method_manual_in').id,
+ 'partner_type': 'customer',
+ 'partner_id': self.partner_id.id,
+ 'amount': self.credit_amount,
+ 'date': date.today(),
+ 'journal_id': self.payment_journal.id,
+ })
+ payment_id.action_post()
diff --git a/customer_credit_payment_website/models/payment_provider.py b/customer_credit_payment_website/models/payment_provider.py
new file mode 100644
index 000000000..6123f9751
--- /dev/null
+++ b/customer_credit_payment_website/models/payment_provider.py
@@ -0,0 +1,60 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from odoo import _, api, fields, models
+from odoo.exceptions import UserError
+
+
+class PaymentProvider(models.Model):
+ """ Inherits the payment provider to add the credit payment """
+ _inherit = 'payment.provider'
+
+ code = fields.Selection(selection_add=[('credit_pay', 'Credit Payment')],
+ ondelete={'credit_pay': 'set default'})
+
+ # === COMPUTE METHODS ===#
+
+ @api.depends('code')
+ def _compute_view_configuration_fields(self):
+ """ Override of payment to hide the credentials page.
+
+ :return: None
+ """
+ super()._compute_view_configuration_fields()
+ self.filtered(
+ lambda p: p.code == 'credit_pay').show_credentials_page = False
+
+ def _compute_feature_support_fields(self):
+ """ Override of `payment` to enable additional features. """
+ super()._compute_feature_support_fields()
+ self.filtered(lambda p: p.code == 'credit_pay').update({
+ 'support_manual_capture': 'partial',
+ 'support_refund': 'partial',
+ 'support_tokenization': True,
+ })
+
+ # === CONSTRAINT METHODS ===#
+
+ @api.constrains('state', 'code')
+ def _check_provider_state(self):
+ if self.filtered(lambda p: p.code == 'credit_pay' and p.state not in (
+ 'test', 'disabled')):
+ raise UserError(_("Demo providers should never be enabled."))
diff --git a/customer_credit_payment_website/models/payment_token.py b/customer_credit_payment_website/models/payment_token.py
new file mode 100644
index 000000000..3e7abd63c
--- /dev/null
+++ b/customer_credit_payment_website/models/payment_token.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+
+from odoo import fields, models
+
+
+class PaymentToken(models.Model):
+ """ Inherits the 'payment.token' """
+ _inherit = 'payment.token'
+
+ credit_pay_simulated_state = fields.Selection(
+ string="Simulated State",
+ help="The state in which transactions created from this token should "
+ "be set.",
+ selection=[
+ ('pending', "Pending"),
+ ('done', "Confirmed"),
+ ('cancel', "Canceled"),
+ ('error', "Error"),
+ ],
+ )
+
+ def _build_display_name(self, *args, should_pad=True, **kwargs):
+ """ Override of `payment` to build the display name without padding.
+
+ Note: self.ensure_one()
+
+ :param list args: The arguments passed by QWeb when calling this method.
+ :param bool should_pad: Whether the token should be padded or not.
+ :param dict kwargs: Optional data.
+ :return: The demo token name.
+ :rtype: str
+ """
+ if self.provider_code != 'credit_pay':
+ return super()._build_display_name(*args, should_pad=should_pad,
+ **kwargs)
+ return super()._build_display_name(*args, should_pad=False, **kwargs)
diff --git a/customer_credit_payment_website/models/payment_transaction.py b/customer_credit_payment_website/models/payment_transaction.py
new file mode 100644
index 000000000..dccfbaa07
--- /dev/null
+++ b/customer_credit_payment_website/models/payment_transaction.py
@@ -0,0 +1,254 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+import logging
+
+from odoo import _, fields, models
+from odoo.exceptions import UserError, ValidationError
+
+_logger = logging.getLogger(__name__)
+
+
+class PaymentTransaction(models.Model):
+ _inherit = 'payment.transaction'
+
+ capture_manually = fields.Boolean(related='provider_id.capture_manually')
+
+ # === ACTION METHODS ===#
+
+ def action_credit_pay_set_done(self):
+ """ Set the state of the credit_pay transaction to 'done'.
+
+ Note: self.ensure_one()
+
+ :return: None
+ """
+ self.ensure_one()
+ if self.provider_code != 'credit_pay':
+ return
+
+ notification_data = {'reference': self.reference,
+ 'simulated_state': 'done'}
+ self._handle_notification_data('credit_pay', notification_data)
+
+ def action_credit_pay_set_canceled(self):
+ """ Set the state of the credit_pay transaction to 'cancel'.
+
+ Note: self.ensure_one()
+
+ :return: None
+ """
+ self.ensure_one()
+ if self.provider_code != 'credit_pay':
+ return
+
+ notification_data = {'reference': self.reference,
+ 'simulated_state': 'cancel'}
+ self._handle_notification_data('credit_pay', notification_data)
+
+ def action_credit_pay_set_error(self):
+ """ Set the state of the credit_pay transaction to 'error'.
+
+ Note: self.ensure_one()
+
+ :return: None
+ """
+ self.ensure_one()
+ if self.provider_code != 'credit_pay':
+ return
+
+ notification_data = {'reference': self.reference,
+ 'simulated_state': 'error'}
+ self._handle_notification_data('credit_pay', notification_data)
+
+ # === BUSINESS METHODS ===#
+
+ def _send_payment_request(self):
+ """ Override of payment to simulate a payment request.
+
+ Note: self.ensure_one()
+
+ :return: None
+ """
+ super()._send_payment_request()
+ if self.provider_code != 'credit_pay':
+ return
+
+ if not self.token_id:
+ raise UserError(
+ "Demo: " + _("The transaction is not linked to a token."))
+
+ simulated_state = self.token_id.credit_pay_simulated_state
+ notification_data = {'reference': self.reference,
+ 'simulated_state': simulated_state}
+ self._handle_notification_data('credit_pay', notification_data)
+
+ def _send_refund_request(self, **kwargs):
+ """ Override of payment to simulate a refund.
+
+ Note: self.ensure_one()
+
+ :param dict kwargs: The keyword arguments.
+ :return: The refund transaction created to process the refund request.
+ :rtype: recordset of `payment.transaction`
+ """
+ refund_tx = super()._send_refund_request(**kwargs)
+ if self.provider_code != 'credit_pay':
+ return refund_tx
+
+ notification_data = {'reference': refund_tx.reference,
+ 'simulated_state': 'done'}
+ refund_tx._handle_notification_data('credit_pay', notification_data)
+
+ return refund_tx
+
+ def _send_capture_request(self):
+ """ Override of payment to simulate a capture request.
+
+ Note: self.ensure_one()
+
+ :return: None
+ """
+ super()._send_capture_request()
+ if self.provider_code != 'credit_pay':
+ return
+
+ notification_data = {
+ 'reference': self.reference,
+ 'simulated_state': 'done',
+ 'manual_capture': True,
+ # Distinguish manual captures from regular one-step captures.
+ }
+ self._handle_notification_data('credit_pay', notification_data)
+
+ def _send_void_request(self):
+ """ Override of payment to simulate a void request.
+
+ Note: self.ensure_one()
+
+ :return: None
+ """
+ super()._send_void_request()
+ if self.provider_code != 'credit_pay':
+ return
+
+ notification_data = {'reference': self.reference,
+ 'simulated_state': 'cancel'}
+ self._handle_notification_data('credit_pay', notification_data)
+
+ def _get_tx_from_notification_data(self, provider_code, notification_data):
+ """ Override of payment to find the transaction based on dummy data.
+
+ :param str provider_code: The code of the provider that handled the
+ transaction :param dict notification_data: The dummy notification
+ data :return: The transaction if found :rtype: recordset of
+ `payment.transaction` :raise: ValidationError if the data match no
+ transaction
+ """
+ tx = super()._get_tx_from_notification_data(provider_code,
+ notification_data)
+ if provider_code != 'credit_pay' or len(tx) == 1:
+ return tx
+
+ reference = notification_data.get('reference')
+ tx = self.search([('reference', '=', reference),
+ ('provider_code', '=', 'credit_pay')])
+ if not tx:
+ raise ValidationError(
+ "Demo: " + _("No transaction found matching reference %s.",
+ reference)
+ )
+ return tx
+
+ def _process_notification_data(self, notification_data):
+ """ Override of payment to process the transaction based on dummy data.
+
+ Note: self.ensure_one()
+
+ :param dict notification_data: The dummy notification data
+ :return: None
+ :raise: ValidationError if inconsistent data were received
+ """
+ super()._process_notification_data(notification_data)
+ if self.provider_code != 'credit_pay':
+ return
+
+ self.provider_reference = f'credit_pay-{self.reference}'
+
+ if self.tokenize:
+ # The reasons why we immediately tokenize the transaction
+ # regardless of the state rather than waiting for the payment
+ # method to be validated ('authorized' or 'done') like the other
+ # payment providers do are: - To save the simulated state and
+ # payment details on the token while we have them. - To allow
+ # customers to create tokens whose transactions will always end
+ # up in the said simulated state.
+ self._credit_pay_tokenize_from_notification_data(notification_data)
+
+ state = notification_data['simulated_state']
+ if state == 'pending':
+ self._set_pending()
+ elif state == 'done':
+ if self.capture_manually and not notification_data.get(
+ 'manual_capture'):
+ self._set_authorized()
+ else:
+ self._set_done()
+ # Immediately post-process the transaction if it is a refund,
+ # as the post-processing will not be triggered by a customer
+ # browsing the transaction from the portal.
+ if self.operation == 'refund':
+ self.env.ref(
+ 'payment.cron_post_process_payment_tx')._trigger()
+ elif state == 'cancel':
+ self._set_canceled()
+ else: # Simulate an error state.
+ self._set_error(
+ _("You selected the following credit_pay payment status: %s",
+ state))
+
+ def _credit_pay_tokenize_from_notification_data(self, notification_data):
+ """ Create a new token based on the notification data.
+
+ Note: self.ensure_one()
+
+ :param dict notification_data: The fake notification data to tokenize
+ from. :return: None
+ """
+ self.ensure_one()
+
+ state = notification_data['simulated_state']
+ token = self.env['payment.token'].create({
+ 'provider_id': self.provider_id.id,
+ 'payment_details': notification_data['payment_details'],
+ 'partner_id': self.partner_id.id,
+ 'provider_ref': 'fake provider reference',
+ 'verified': True,
+ 'credit_pay_simulated_state': state,
+ })
+ self.write({
+ 'token_id': token,
+ 'tokenize': False,
+ })
+ _logger.info(
+ "Created token with id %s for partner with id %s.", token.id,
+ self.partner_id.id
+ )
diff --git a/customer_credit_payment_website/models/res_partner.py b/customer_credit_payment_website/models/res_partner.py
new file mode 100644
index 000000000..19bfbc11b
--- /dev/null
+++ b/customer_credit_payment_website/models/res_partner.py
@@ -0,0 +1,101 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from odoo import fields, models
+
+
+class ResPartner(models.Model):
+ """
+ Inherited Model res partner adding the credit details.
+ """
+ _inherit = "res.partner"
+
+ credit_amount = fields.Float(compute='_compute_credit_amount',
+ string='Credit Amount',
+ help='Here the credit amount for the '
+ 'associated customer.')
+ allow_credit_amount = fields.Boolean(
+ string='Allow credit payment when Order Amount is More Than Credit '
+ 'Balance',
+ help='Field allows the customer to purchase if the credit amount is '
+ 'insufficient.')
+ cust_credit_line_ids = fields.One2many('credit.detail.lines', 'customer_id',
+ string='Credit Details',
+ help='Credit details associated '
+ 'with the customer')
+
+ def _compute_credit_amount(self):
+ """ Compute function to get the credit amount of the associated
+ customer"""
+ for record in self:
+ credit_count = self.env['credit.details'].search(
+ [('customer_id', '=', record.id)])
+ record.credit_amount = credit_count.credit_details_amount
+
+ def credit_details(self):
+ """ Function to return the credit details associated with the
+ customer."""
+ return {
+ 'name': 'Credits',
+ 'view_type': 'form',
+ 'view_mode': 'list,form',
+ 'res_model': 'credit.details',
+ 'type': 'ir.actions.act_window',
+ 'domain': [('customer_id', '=', self.id)]
+ }
+
+
+class CustomerCreditDetails(models.Model):
+ """ Model to get the customer credit details """
+ _name = 'customer.credit.details'
+ _description = "Customer Credit Details"
+
+ customer_credit_id = fields.Many2one('res.partner', string='Customer Id',
+ help='To attach with the customer '
+ 'model')
+ customer_credit_details_id = fields.Many2one('credit.detail.lines',
+ string='Customer Credit '
+ 'Details',
+ help='The field to get the '
+ 'customer credit details')
+ date = fields.Date(string='Date',
+ help='The date field for the associated credit detail '
+ 'lines.')
+ amount = fields.Float(string='Amount',
+ help='To get the credit amount for the partner')
+ previous_credit_amount = fields.Float(string='Previous Credit Amount',
+ help='The previous credit amount '
+ 'associated with the partner.')
+ updated_amount = fields.Float('Updated Amount',
+ help='The Updated amount associated with '
+ 'the partner.')
+
+
+class AccountPayment(models.Model):
+ """ Inherited the Model "account.payment" to add the customer details """
+ _inherit = "account.payment"
+ _description = "Account Payment"
+
+ customer_credit_payment_id = fields.Many2one('res.partner',
+ string='Customer',
+ help='The customer details '
+ 'add to the account '
+ 'payment.')
diff --git a/customer_credit_payment_website/models/sale_order_line.py b/customer_credit_payment_website/models/sale_order_line.py
new file mode 100644
index 000000000..e10dc7a9c
--- /dev/null
+++ b/customer_credit_payment_website/models/sale_order_line.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Afra K (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 .
+#
+###############################################################################
+from odoo import fields, models
+
+
+class SaleOrder(models.Model):
+ """ Inherited SaleOrder to add the field"""
+ _inherit = 'sale.order'
+
+ credit_amount_sale = fields.Float(string='Credit amount website',
+ help='The credit amount used in the '
+ 'website')
diff --git a/customer_credit_payment_website/security/ir.model.access.csv b/customer_credit_payment_website/security/ir.model.access.csv
new file mode 100644
index 000000000..72e4f25f4
--- /dev/null
+++ b/customer_credit_payment_website/security/ir.model.access.csv
@@ -0,0 +1,7 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_credit_amount,access.credit.amount,model_credit_amount,base.group_user,1,1,1,1
+access_credit_details,access.credit.details,model_credit_details,base.group_user,1,1,1,1
+access_credit_detail_lines,access.credit.detail.lines,model_credit_detail_lines,base.group_user,1,1,1,1
+access_debit_detail_lines,access.debit.detail.lines,model_debit_detail_lines,base.group_user,1,1,1,1
+access_customer_credit_details,access.customer.credit.details,model_customer_credit_details,base.group_user,1,1,1,1
+access_credit_payment,access.credit.payment,model_credit_payment,base.group_user,1,1,1,1
diff --git a/customer_credit_payment_website/security/website_credit_payment_security.xml b/customer_credit_payment_website/security/website_credit_payment_security.xml
new file mode 100644
index 000000000..90ab7338c
--- /dev/null
+++ b/customer_credit_payment_website/security/website_credit_payment_security.xml
@@ -0,0 +1,7 @@
+
+
+
+
+ Credit Payment Approval
+
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/arrows-repeat.svg b/customer_credit_payment_website/static/description/assets/icons/arrows-repeat.svg
new file mode 100644
index 000000000..1d7efabc5
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/arrows-repeat.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/banner-1.png b/customer_credit_payment_website/static/description/assets/icons/banner-1.png
new file mode 100644
index 000000000..c180db172
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/banner-1.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/banner-2.svg b/customer_credit_payment_website/static/description/assets/icons/banner-2.svg
new file mode 100644
index 000000000..e606d97d9
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/banner-2.svg
@@ -0,0 +1,73 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/banner-bg.png b/customer_credit_payment_website/static/description/assets/icons/banner-bg.png
new file mode 100644
index 000000000..a8238d3c0
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/banner-bg.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/banner-bg.svg b/customer_credit_payment_website/static/description/assets/icons/banner-bg.svg
new file mode 100644
index 000000000..b1378103e
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/banner-bg.svg
@@ -0,0 +1,9 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/banner-call.svg b/customer_credit_payment_website/static/description/assets/icons/banner-call.svg
new file mode 100644
index 000000000..96c687e81
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/banner-call.svg
@@ -0,0 +1,5 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/banner-mail.svg b/customer_credit_payment_website/static/description/assets/icons/banner-mail.svg
new file mode 100644
index 000000000..cbf0d158d
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/banner-mail.svg
@@ -0,0 +1,5 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/banner-pattern.svg b/customer_credit_payment_website/static/description/assets/icons/banner-pattern.svg
new file mode 100644
index 000000000..9c1c7e101
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/banner-pattern.svg
@@ -0,0 +1,343 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/banner-promo.svg b/customer_credit_payment_website/static/description/assets/icons/banner-promo.svg
new file mode 100644
index 000000000..d52791b11
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/banner-promo.svg
@@ -0,0 +1,147 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/brand-pair.svg b/customer_credit_payment_website/static/description/assets/icons/brand-pair.svg
new file mode 100644
index 000000000..d8db7fc1e
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/brand-pair.svg
@@ -0,0 +1,41 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/check.png b/customer_credit_payment_website/static/description/assets/icons/check.png
new file mode 100644
index 000000000..c8e85f51d
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/check.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/chevron.png b/customer_credit_payment_website/static/description/assets/icons/chevron.png
new file mode 100644
index 000000000..2089293d6
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/chevron.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/close-icon.svg b/customer_credit_payment_website/static/description/assets/icons/close-icon.svg
new file mode 100644
index 000000000..df8cce37a
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/close-icon.svg
@@ -0,0 +1,5 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/cogs.png b/customer_credit_payment_website/static/description/assets/icons/cogs.png
new file mode 100644
index 000000000..95d0bad62
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/cogs.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/collabarate-icon.svg b/customer_credit_payment_website/static/description/assets/icons/collabarate-icon.svg
new file mode 100644
index 000000000..dd4e10518
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/collabarate-icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/consultation.png b/customer_credit_payment_website/static/description/assets/icons/consultation.png
new file mode 100644
index 000000000..8319d4baa
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/consultation.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/cybro-logo.png b/customer_credit_payment_website/static/description/assets/icons/cybro-logo.png
new file mode 100644
index 000000000..ff4b78220
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/cybro-logo.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/down.svg b/customer_credit_payment_website/static/description/assets/icons/down.svg
new file mode 100644
index 000000000..f21c36271
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/customer_credit_payment_website/static/description/assets/icons/ecom-black.png b/customer_credit_payment_website/static/description/assets/icons/ecom-black.png
new file mode 100644
index 000000000..a9385ff13
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/ecom-black.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/education-black.png b/customer_credit_payment_website/static/description/assets/icons/education-black.png
new file mode 100644
index 000000000..3eb09b27b
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/education-black.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/faq.png b/customer_credit_payment_website/static/description/assets/icons/faq.png
new file mode 100644
index 000000000..4250b5b81
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/faq.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/feature-icon.svg b/customer_credit_payment_website/static/description/assets/icons/feature-icon.svg
new file mode 100644
index 000000000..fa0ea6850
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/feature-icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/feature.png b/customer_credit_payment_website/static/description/assets/icons/feature.png
new file mode 100644
index 000000000..ac7a785c0
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/feature.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/gear.svg b/customer_credit_payment_website/static/description/assets/icons/gear.svg
new file mode 100644
index 000000000..0cc66b6ea
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/gear.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/hero.gif b/customer_credit_payment_website/static/description/assets/icons/hero.gif
new file mode 100644
index 000000000..380654dfe
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/hero.gif differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/hire-odoo.svg b/customer_credit_payment_website/static/description/assets/icons/hire-odoo.svg
new file mode 100644
index 000000000..e1ac089b0
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/hire-odoo.svg
@@ -0,0 +1,12 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/hotel-black.png b/customer_credit_payment_website/static/description/assets/icons/hotel-black.png
new file mode 100644
index 000000000..130f613be
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/hotel-black.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/license.png b/customer_credit_payment_website/static/description/assets/icons/license.png
new file mode 100644
index 000000000..a5869797e
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/license.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/life-ring-icon.svg b/customer_credit_payment_website/static/description/assets/icons/life-ring-icon.svg
new file mode 100644
index 000000000..3ae6e1d89
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/life-ring-icon.svg
@@ -0,0 +1,13 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/lifebuoy.png b/customer_credit_payment_website/static/description/assets/icons/lifebuoy.png
new file mode 100644
index 000000000..658d56ccc
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/lifebuoy.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/mail.svg b/customer_credit_payment_website/static/description/assets/icons/mail.svg
new file mode 100644
index 000000000..1eedde695
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/mail.svg
@@ -0,0 +1,3 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/manufacturing-black.png b/customer_credit_payment_website/static/description/assets/icons/manufacturing-black.png
new file mode 100644
index 000000000..697eb0e9f
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/manufacturing-black.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/notes.png b/customer_credit_payment_website/static/description/assets/icons/notes.png
new file mode 100644
index 000000000..ee5e95404
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/notes.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/notification icon.svg b/customer_credit_payment_website/static/description/assets/icons/notification icon.svg
new file mode 100644
index 000000000..053189973
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/notification icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/odoo-consultancy.svg b/customer_credit_payment_website/static/description/assets/icons/odoo-consultancy.svg
new file mode 100644
index 000000000..e05f65bde
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/odoo-consultancy.svg
@@ -0,0 +1,4 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/odoo-licencing.svg b/customer_credit_payment_website/static/description/assets/icons/odoo-licencing.svg
new file mode 100644
index 000000000..2606c88b0
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/odoo-licencing.svg
@@ -0,0 +1,3 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/odoo-logo.png b/customer_credit_payment_website/static/description/assets/icons/odoo-logo.png
new file mode 100644
index 000000000..0e4d0eb5a
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/odoo-logo.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/patter.svg b/customer_credit_payment_website/static/description/assets/icons/patter.svg
new file mode 100644
index 000000000..25c9c0a8f
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/patter.svg
@@ -0,0 +1,9 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/pattern1.png b/customer_credit_payment_website/static/description/assets/icons/pattern1.png
new file mode 100644
index 000000000..09ab0fb2d
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/pattern1.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/pos-black.png b/customer_credit_payment_website/static/description/assets/icons/pos-black.png
new file mode 100644
index 000000000..97c0f90c1
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/pos-black.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/puzzle-piece-icon.svg b/customer_credit_payment_website/static/description/assets/icons/puzzle-piece-icon.svg
new file mode 100644
index 000000000..3e9ad9373
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/puzzle-piece-icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/puzzle.png b/customer_credit_payment_website/static/description/assets/icons/puzzle.png
new file mode 100644
index 000000000..65cf854e7
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/puzzle.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/replace-icon.svg b/customer_credit_payment_website/static/description/assets/icons/replace-icon.svg
new file mode 100644
index 000000000..d0e3a7af1
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/replace-icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/restaurant-black.png b/customer_credit_payment_website/static/description/assets/icons/restaurant-black.png
new file mode 100644
index 000000000..4a35eb939
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/restaurant-black.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/screenshot-main.png b/customer_credit_payment_website/static/description/assets/icons/screenshot-main.png
new file mode 100644
index 000000000..575f8e676
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/screenshot-main.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/screenshot.png b/customer_credit_payment_website/static/description/assets/icons/screenshot.png
new file mode 100644
index 000000000..cef272529
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/screenshot.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/service-black.png b/customer_credit_payment_website/static/description/assets/icons/service-black.png
new file mode 100644
index 000000000..301ab51cb
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/service-black.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/skype-fill.svg b/customer_credit_payment_website/static/description/assets/icons/skype-fill.svg
new file mode 100644
index 000000000..c17423639
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/skype-fill.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/skype.png b/customer_credit_payment_website/static/description/assets/icons/skype.png
new file mode 100644
index 000000000..51b409fb3
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/skype.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/skype.svg b/customer_credit_payment_website/static/description/assets/icons/skype.svg
new file mode 100644
index 000000000..df3dad39b
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/skype.svg
@@ -0,0 +1,3 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/star-1.svg b/customer_credit_payment_website/static/description/assets/icons/star-1.svg
new file mode 100644
index 000000000..7e55ab162
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/star-1.svg
@@ -0,0 +1,53 @@
+
+
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/star-2.svg b/customer_credit_payment_website/static/description/assets/icons/star-2.svg
new file mode 100644
index 000000000..5ae9f507a
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/star-2.svg
@@ -0,0 +1,9 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/support.png b/customer_credit_payment_website/static/description/assets/icons/support.png
new file mode 100644
index 000000000..4f18b8b82
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/support.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/test-1 - Copy.png b/customer_credit_payment_website/static/description/assets/icons/test-1 - Copy.png
new file mode 100644
index 000000000..f6a902663
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/test-1 - Copy.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/test-1.png b/customer_credit_payment_website/static/description/assets/icons/test-1.png
new file mode 100644
index 000000000..0908add2b
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/test-1.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/test-2.png b/customer_credit_payment_website/static/description/assets/icons/test-2.png
new file mode 100644
index 000000000..4671fe91e
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/test-2.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/trading-black.png b/customer_credit_payment_website/static/description/assets/icons/trading-black.png
new file mode 100644
index 000000000..9398ba2f1
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/trading-black.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/training.png b/customer_credit_payment_website/static/description/assets/icons/training.png
new file mode 100644
index 000000000..884ca024d
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/training.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/translate.svg b/customer_credit_payment_website/static/description/assets/icons/translate.svg
new file mode 100644
index 000000000..af9c8a1aa
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/translate.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/update.png b/customer_credit_payment_website/static/description/assets/icons/update.png
new file mode 100644
index 000000000..ecbc5a01a
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/update.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/user.png b/customer_credit_payment_website/static/description/assets/icons/user.png
new file mode 100644
index 000000000..6ffb23d9f
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/user.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/video.png b/customer_credit_payment_website/static/description/assets/icons/video.png
new file mode 100644
index 000000000..576705b17
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/video.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/whatsapp.png b/customer_credit_payment_website/static/description/assets/icons/whatsapp.png
new file mode 100644
index 000000000..d513a5356
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/whatsapp.png differ
diff --git a/customer_credit_payment_website/static/description/assets/icons/wrench-icon.svg b/customer_credit_payment_website/static/description/assets/icons/wrench-icon.svg
new file mode 100644
index 000000000..174b5a465
--- /dev/null
+++ b/customer_credit_payment_website/static/description/assets/icons/wrench-icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/customer_credit_payment_website/static/description/assets/icons/wrench.png b/customer_credit_payment_website/static/description/assets/icons/wrench.png
new file mode 100644
index 000000000..6c04dea0f
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/icons/wrench.png differ
diff --git a/customer_credit_payment_website/static/description/assets/modules/1.jpg b/customer_credit_payment_website/static/description/assets/modules/1.jpg
new file mode 100644
index 000000000..3cb15fe01
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/modules/1.jpg differ
diff --git a/customer_credit_payment_website/static/description/assets/modules/2.jpg b/customer_credit_payment_website/static/description/assets/modules/2.jpg
new file mode 100644
index 000000000..662cadcc3
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/modules/2.jpg differ
diff --git a/customer_credit_payment_website/static/description/assets/modules/3.png b/customer_credit_payment_website/static/description/assets/modules/3.png
new file mode 100644
index 000000000..7c67e2eec
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/modules/3.png differ
diff --git a/customer_credit_payment_website/static/description/assets/modules/4.jpg b/customer_credit_payment_website/static/description/assets/modules/4.jpg
new file mode 100644
index 000000000..f85e160cd
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/modules/4.jpg differ
diff --git a/customer_credit_payment_website/static/description/assets/modules/4.png b/customer_credit_payment_website/static/description/assets/modules/4.png
new file mode 100644
index 000000000..696582fa8
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/modules/4.png differ
diff --git a/customer_credit_payment_website/static/description/assets/modules/5.jpg b/customer_credit_payment_website/static/description/assets/modules/5.jpg
new file mode 100644
index 000000000..4bd9278e3
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/modules/5.jpg differ
diff --git a/customer_credit_payment_website/static/description/assets/modules/6.jpg b/customer_credit_payment_website/static/description/assets/modules/6.jpg
new file mode 100644
index 000000000..580ea075d
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/modules/6.jpg differ
diff --git a/customer_credit_payment_website/static/description/assets/modules/6.png b/customer_credit_payment_website/static/description/assets/modules/6.png
new file mode 100644
index 000000000..c55756590
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/modules/6.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/1.png b/customer_credit_payment_website/static/description/assets/screenshots/1.png
new file mode 100644
index 000000000..916406544
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/1.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/10.png b/customer_credit_payment_website/static/description/assets/screenshots/10.png
new file mode 100644
index 000000000..52ff4c6d5
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/10.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/11.png b/customer_credit_payment_website/static/description/assets/screenshots/11.png
new file mode 100644
index 000000000..052f4c140
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/11.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/12.png b/customer_credit_payment_website/static/description/assets/screenshots/12.png
new file mode 100644
index 000000000..2fc794acf
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/12.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/13.png b/customer_credit_payment_website/static/description/assets/screenshots/13.png
new file mode 100644
index 000000000..03b496fdb
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/13.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/14.png b/customer_credit_payment_website/static/description/assets/screenshots/14.png
new file mode 100644
index 000000000..769b08404
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/14.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/15.png b/customer_credit_payment_website/static/description/assets/screenshots/15.png
new file mode 100644
index 000000000..a377c16ca
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/15.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/16.png b/customer_credit_payment_website/static/description/assets/screenshots/16.png
new file mode 100644
index 000000000..f47b9983a
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/16.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/17.png b/customer_credit_payment_website/static/description/assets/screenshots/17.png
new file mode 100644
index 000000000..bbc76c265
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/17.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/18.png b/customer_credit_payment_website/static/description/assets/screenshots/18.png
new file mode 100644
index 000000000..d56766c0e
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/18.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/19.png b/customer_credit_payment_website/static/description/assets/screenshots/19.png
new file mode 100644
index 000000000..4bf73b770
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/19.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/2.png b/customer_credit_payment_website/static/description/assets/screenshots/2.png
new file mode 100644
index 000000000..b5534d944
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/2.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/20.png b/customer_credit_payment_website/static/description/assets/screenshots/20.png
new file mode 100644
index 000000000..588e1c888
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/20.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/21.png b/customer_credit_payment_website/static/description/assets/screenshots/21.png
new file mode 100644
index 000000000..c2611f292
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/21.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/22.png b/customer_credit_payment_website/static/description/assets/screenshots/22.png
new file mode 100644
index 000000000..348e13fb3
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/22.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/23.png b/customer_credit_payment_website/static/description/assets/screenshots/23.png
new file mode 100644
index 000000000..f0cc71120
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/23.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/24.png b/customer_credit_payment_website/static/description/assets/screenshots/24.png
new file mode 100644
index 000000000..bb7b3df79
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/24.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/25.png b/customer_credit_payment_website/static/description/assets/screenshots/25.png
new file mode 100644
index 000000000..6346f3715
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/25.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/26.png b/customer_credit_payment_website/static/description/assets/screenshots/26.png
new file mode 100644
index 000000000..5934ddd60
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/26.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/27.png b/customer_credit_payment_website/static/description/assets/screenshots/27.png
new file mode 100644
index 000000000..64430201d
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/27.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/28.png b/customer_credit_payment_website/static/description/assets/screenshots/28.png
new file mode 100644
index 000000000..622b9e273
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/28.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/29.png b/customer_credit_payment_website/static/description/assets/screenshots/29.png
new file mode 100644
index 000000000..9738e6b6a
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/29.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/3.png b/customer_credit_payment_website/static/description/assets/screenshots/3.png
new file mode 100644
index 000000000..bee2102c9
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/3.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/30.png b/customer_credit_payment_website/static/description/assets/screenshots/30.png
new file mode 100644
index 000000000..f2024a4ac
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/30.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/4.png b/customer_credit_payment_website/static/description/assets/screenshots/4.png
new file mode 100644
index 000000000..144c4ec4d
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/4.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/5.png b/customer_credit_payment_website/static/description/assets/screenshots/5.png
new file mode 100644
index 000000000..dff4afbf2
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/5.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/6.png b/customer_credit_payment_website/static/description/assets/screenshots/6.png
new file mode 100644
index 000000000..096cfded5
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/6.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/7.png b/customer_credit_payment_website/static/description/assets/screenshots/7.png
new file mode 100644
index 000000000..1b631c4f9
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/7.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/8.png b/customer_credit_payment_website/static/description/assets/screenshots/8.png
new file mode 100644
index 000000000..2e0f778d7
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/8.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/9.png b/customer_credit_payment_website/static/description/assets/screenshots/9.png
new file mode 100644
index 000000000..54ecf3bfa
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/9.png differ
diff --git a/customer_credit_payment_website/static/description/assets/screenshots/hero-v17.gif b/customer_credit_payment_website/static/description/assets/screenshots/hero-v17.gif
new file mode 100644
index 000000000..e4fa1f64c
Binary files /dev/null and b/customer_credit_payment_website/static/description/assets/screenshots/hero-v17.gif differ
diff --git a/customer_credit_payment_website/static/description/banner.jpg b/customer_credit_payment_website/static/description/banner.jpg
new file mode 100644
index 000000000..26579dfb6
Binary files /dev/null and b/customer_credit_payment_website/static/description/banner.jpg differ
diff --git a/customer_credit_payment_website/static/description/credit.png b/customer_credit_payment_website/static/description/credit.png
new file mode 100644
index 000000000..be22c3af3
Binary files /dev/null and b/customer_credit_payment_website/static/description/credit.png differ
diff --git a/customer_credit_payment_website/static/description/icon.png b/customer_credit_payment_website/static/description/icon.png
new file mode 100644
index 000000000..7a0788aed
Binary files /dev/null and b/customer_credit_payment_website/static/description/icon.png differ
diff --git a/customer_credit_payment_website/static/description/index.html b/customer_credit_payment_website/static/description/index.html
new file mode 100644
index 000000000..51710d84f
--- /dev/null
+++ b/customer_credit_payment_website/static/description/index.html
@@ -0,0 +1,1602 @@
+
+
+
+
+
+ Customer Credit Payment In Website
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Community
+
+
+ Enterprise
+
+
+ Odoo.sh
+
+
+
+
+
+
+
+
+
This module enables assigning and managing credits for
+ website customers, facilitating purchases and balance
+ updates, with proper accounting management
+
+ We have the Credit Amount menu in the sales. We can add credit amount to
+ the customer from here. And when the approver approve it , the amount
+ will be added to account
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Credit Details
+
+ Menu.
+
+
+ When the Approver approves it can be seen in the Credit Details menu in
+ the sales.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Credit or Debit
+
+ Details.
+
+
+ We can see each customer credit or debit details.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Approval
+
+ Required.
+
+
+ Approves need to Approve the Credit Amount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Smart
+
+ Button.
+
+
+ We can see the credit amount allowed for each customer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Credit
+
+ Details.
+
+
+ To update the accounting Entry in Account
+ Payment
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Payment
+
+ Wizard.
+
+
+ Add the Amount and Journal.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Customer Form
+
+ View.
+
+
+ Credit details in customer's page.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Website.
+
+
+ Credit Details in Website.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Credit Balance
+
+ From Website.
+
+
+ Add credit balance from website.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add credit balance from website
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The purchased credit amount needs to be
+ approved.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ After approval, it is added to the credit details.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ In order to pay using the configured credit payment we have to first activate the provider
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ We can purchase the product using the 'Credit Payment' method.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ When using the 'Credit Payment' method, it
+ will automatically debit the amount from the
+ associated customer.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If we're using more than the credit amount for purchasing, it will not allow the purchase of the products.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allow customers to use more than the credit amount if needed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allow customers to use more than the credit amount if needed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+In this case, the credit amount will become negative and we can update it accordingly.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Allow customers to use more than the credit amount if needed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Import Images from Zip File.
+
+
+
+
+
+
+
+
+
+
+
+ Import Images to Product,Customers or Employees.
+
+ Payments made with this payment method will remain
+ pending.
+
+
+ Payments made with this payment method will be
+ successful.
+
+
+ Payments made with this payment method will be automatically
+ canceled.
+
+
+ Payments made with this payment method will simulate a
+ processing error.
+
+
+ You Don't Have Enough Credit Balance in your account, Your Online payment has not been
+ successfully completed, You go back and pay with another payment method and compete your
+ transaction
+