Initial commit: Cybrosys Odoo packages (10 packages)
48
odoo-bringout-cybrosys-stock_move_invoice/README.md
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# Invoice From Stock Picking
|
||||
|
||||
In this module creating customer invoice,vendor bill, customer
|
||||
credit note and refund from stock picking
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-cybrosys-stock_move_invoice
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- stock
|
||||
- account
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Invoice From Stock Picking
|
||||
- **Version**: 16.0.1.0.0
|
||||
- **Category**: Stock
|
||||
- **License**: AGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Custom addon from bringout-cybrosys vendor, addon `stock_move_invoice`.
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original AGPL-3 license from the addon.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Reports: doc/REPORTS.md
|
||||
- Security: doc/SECURITY.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Architecture
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
U[Users] -->|HTTP| V[Views and QWeb Templates]
|
||||
V --> C[Controllers]
|
||||
V --> W[Wizards – Transient Models]
|
||||
C --> M[Models and ORM]
|
||||
W --> M
|
||||
M --> R[Reports]
|
||||
DX[Data XML] --> M
|
||||
S[Security – ACLs and Groups] -. enforces .-> M
|
||||
|
||||
subgraph Stock_move_invoice Module - stock_move_invoice
|
||||
direction LR
|
||||
M:::layer
|
||||
W:::layer
|
||||
C:::layer
|
||||
V:::layer
|
||||
R:::layer
|
||||
S:::layer
|
||||
DX:::layer
|
||||
end
|
||||
|
||||
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
|
||||
```
|
||||
|
||||
Notes
|
||||
- Views include tree/form/kanban templates and report templates.
|
||||
- Controllers provide website/portal routes when present.
|
||||
- Wizards are UI flows implemented with `models.TransientModel`.
|
||||
- Data XML loads data/demo records; Security defines groups and access.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for stock_move_invoice. Configure related models, access rights, and options as needed.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
- [stock](../../odoo-bringout-oca-ocb-stock)
|
||||
- [account](../../odoo-bringout-oca-ocb-account)
|
||||
4
odoo-bringout-cybrosys-stock_move_invoice/doc/FAQ.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# FAQ
|
||||
|
||||
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||
- Q: How to enable? A: Start server with --addon stock_move_invoice or install in UI.
|
||||
7
odoo-bringout-cybrosys-stock_move_invoice/doc/INSTALL.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-cybrosys-stock_move_invoice"
|
||||
# or
|
||||
uv pip install odoo-bringout-cybrosys-stock_move_invoice"
|
||||
```
|
||||
15
odoo-bringout-cybrosys-stock_move_invoice/doc/MODELS.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in stock_move_invoice.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class account_move
|
||||
class res_config_settings
|
||||
class stock_picking
|
||||
class stock_return_picking
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: stock_move_invoice. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon stock_move_invoice
|
||||
- License: LGPL-3
|
||||
3
odoo-bringout-cybrosys-stock_move_invoice/doc/REPORTS.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
34
odoo-bringout-cybrosys-stock_move_invoice/doc/SECURITY.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# Security
|
||||
|
||||
Access control and security definitions in stock_move_invoice.
|
||||
|
||||
## Access Control Lists (ACLs)
|
||||
|
||||
Model access permissions defined in:
|
||||
- **[ir.model.access.csv](../stock_move_invoice/security/ir.model.access.csv)**
|
||||
- 1 model access rules
|
||||
|
||||
## Record Rules
|
||||
|
||||
Row-level security rules defined in:
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "Security Layers"
|
||||
A[Users] --> B[Groups]
|
||||
B --> C[Access Control Lists]
|
||||
C --> D[Models]
|
||||
B --> E[Record Rules]
|
||||
E --> F[Individual Records]
|
||||
end
|
||||
```
|
||||
|
||||
Security files overview:
|
||||
- **[ir.model.access.csv](../stock_move_invoice/security/ir.model.access.csv)**
|
||||
- Model access permissions (CRUD rights)
|
||||
|
||||
Notes
|
||||
- Access Control Lists define which groups can access which models
|
||||
- Record Rules provide row-level security (filter records by user/group)
|
||||
- Security groups organize users and define permission sets
|
||||
- All security is enforced at the ORM level by Odoo
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Troubleshooting
|
||||
|
||||
- Ensure Python and Odoo environment matches repo guidance.
|
||||
- Check database connectivity and logs if startup fails.
|
||||
- Validate that dependent addons listed in DEPENDENCIES.md are installed.
|
||||
7
odoo-bringout-cybrosys-stock_move_invoice/doc/USAGE.md
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
# Usage
|
||||
|
||||
Start Odoo including this addon (from repo root):
|
||||
|
||||
```bash
|
||||
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon stock_move_invoice
|
||||
```
|
||||
8
odoo-bringout-cybrosys-stock_move_invoice/doc/WIZARDS.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Wizards
|
||||
|
||||
Transient models exposed as UI wizards in stock_move_invoice.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class PickingInvoiceWizard
|
||||
```
|
||||
44
odoo-bringout-cybrosys-stock_move_invoice/pyproject.toml
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
[project]
|
||||
name = "odoo-bringout-cybrosys-stock_move_invoice"
|
||||
version = "16.0.0"
|
||||
description = "Invoice From Stock Picking - In this module creating customer invoice,vendor bill, customer
|
||||
credit note and refund from stock picking"
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-ocb-stock>=16.0.0",
|
||||
"odoo-bringout-oca-ocb-account>=16.0.0",
|
||||
"requests>=2.25.1"
|
||||
]
|
||||
readme = "README.md"
|
||||
requires-python = ">= 3.11"
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Office/Business",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
homepage = "https://github.com/bringout/0"
|
||||
repository = "https://github.com/bringout/0"
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.metadata]
|
||||
allow-direct-references = true
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["stock_move_invoice"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
48
odoo-bringout-cybrosys-stock_move_invoice/stock_move_invoice/README.rst
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
Invoice From Stock Picking
|
||||
==========================
|
||||
* Enables the option for creating invoice from stock picking
|
||||
|
||||
Installation
|
||||
============
|
||||
- www.odoo.com/documentation/16.0/setup/install.html
|
||||
- Install our custom addon
|
||||
|
||||
License
|
||||
-------
|
||||
GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3)
|
||||
(http://www.gnu.org/licenses/agpl.html)
|
||||
|
||||
Company
|
||||
-------
|
||||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
|
||||
|
||||
Credits
|
||||
-------
|
||||
* Developer:
|
||||
V13 Sayooj A O
|
||||
V14 Minhaj T
|
||||
V15 Tintuk Tomin
|
||||
|
||||
Contacts
|
||||
--------
|
||||
* Mail Contact : odoo@cybrosys.com
|
||||
|
||||
Bug Tracker
|
||||
-----------
|
||||
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
|
||||
|
||||
Maintainer
|
||||
==========
|
||||
.. image:: https://cybrosys.com/images/logo.png
|
||||
:target: https://cybrosys.com
|
||||
|
||||
This module is maintained by Cybrosys Technologies.
|
||||
|
||||
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
|
||||
|
||||
Further information
|
||||
===================
|
||||
HTML Description: `<static/description/index.html>`__
|
||||
23
odoo-bringout-cybrosys-stock_move_invoice/stock_move_invoice/__init__.py
Executable file
|
|
@ -0,0 +1,23 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
|
||||
# Author: Sayooj A O(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU AFFERO
|
||||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
# (AGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
from . import models
|
||||
from . import wizard
|
||||
47
odoo-bringout-cybrosys-stock_move_invoice/stock_move_invoice/__manifest__.py
Executable file
|
|
@ -0,0 +1,47 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
|
||||
# Author: Sayooj A O(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU AFFERO
|
||||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
# (AGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
{
|
||||
'name': "Invoice From Stock Picking",
|
||||
'version': '16.0.1.0.0',
|
||||
'summary': """In this module creating customer invoice,vendor bill, customer
|
||||
credit note and refund from stock picking""",
|
||||
'description': """In this module creating customer invoice,vendor bill, customer
|
||||
credit note and refund from stock picking""",
|
||||
'category': 'Stock',
|
||||
'author': 'Cybrosys Techno Solutions',
|
||||
'company': 'Cybrosys Techno Solutions',
|
||||
'maintainer': 'Cybrosys Techno Solutions',
|
||||
'website': "https://www.cybrosys.com",
|
||||
'depends': ['stock', 'account'],
|
||||
'data': [
|
||||
'views/account_move_inherited.xml',
|
||||
'views/stock_picking_inherited.xml',
|
||||
'views/res_config_settings_inherited.xml',
|
||||
'wizard/picking_invoice_wizard.xml',
|
||||
],
|
||||
'license': "AGPL-3",
|
||||
'images': ['static/description/banner.png'],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
'sequence': 1
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
## Module <stock_move_invoice>
|
||||
|
||||
#### 06.11.2020
|
||||
#### Version 16.0.1.0.0
|
||||
##### ADD
|
||||
- Initial commit for Invoice From Stock Picking
|
||||
|
||||
#### 19.07.2023
|
||||
#### Version 16.0.1.0.0
|
||||
##### UPDATE
|
||||
- Update for Invoice From Stock Picking
|
||||
|
||||
#### 13.02.2024
|
||||
#### Version 16.0.1.0.1
|
||||
##### BUG FIX
|
||||
- Updated the module by removing the stock move line issue
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
|
||||
# Author: Sayooj A O(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU AFFERO
|
||||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
# (AGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
from . import account_move
|
||||
from . import res_config_settings
|
||||
from . import stock_picking
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
|
||||
# Author: Sayooj A O(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU AFFERO
|
||||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
# (AGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
"""Inheriting the model account.move"""
|
||||
_inherit = 'account.move'
|
||||
|
||||
picking_id = fields.Many2one('stock.picking', string='Picking')
|
||||
transfer_ids = fields.Many2many('stock.picking', string='Transfers')
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
|
||||
# Author: Sayooj A O(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU AFFERO
|
||||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
# (AGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class Settings(models.TransientModel):
|
||||
"""Inheriting model res.config.settings to add journal fields"""
|
||||
_inherit = 'res.config.settings'
|
||||
|
||||
customer_journal_id = fields.Many2one('account.journal',
|
||||
string='Customer Journal',
|
||||
config_parameter=
|
||||
'stock_move_invoice.'
|
||||
'customer_journal_id',
|
||||
help='To add customer journal')
|
||||
vendor_journal_id = fields.Many2one('account.journal',
|
||||
string='Vendor Journal',
|
||||
config_parameter=
|
||||
'stock_move_invoice.vendor_journal_id',
|
||||
help='To add vendor journal')
|
||||
|
|
@ -0,0 +1,369 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
|
||||
# Author: Sayooj A O(<https://www.cybrosys.com>)
|
||||
#
|
||||
# You can modify it under the terms of the GNU AFFERO
|
||||
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
# (AGPL v3) along with this program.
|
||||
# If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#############################################################################
|
||||
from odoo import fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class StockPicking(models.Model):
|
||||
"""Inheriting model stock.picking"""
|
||||
_inherit = 'stock.picking'
|
||||
|
||||
invoice_count = fields.Integer(string='Invoices',
|
||||
compute='_compute_invoice_count')
|
||||
operation_code = fields.Selection(related='picking_type_id.code')
|
||||
is_return = fields.Boolean()
|
||||
|
||||
def _compute_invoice_count(self):
|
||||
"""This compute function used to count the number of invoice for
|
||||
the picking"""
|
||||
for picking_id in self:
|
||||
move_ids = picking_id.env['account.move'].search(
|
||||
[('transfer_ids', 'in', picking_id.id)])
|
||||
if move_ids:
|
||||
self.invoice_count = len(move_ids)
|
||||
else:
|
||||
self.invoice_count = 0
|
||||
|
||||
def create_invoice(self):
|
||||
"""This is the function for creating customer invoice
|
||||
from the picking"""
|
||||
for picking_id in self:
|
||||
current_user = self.env.uid
|
||||
if picking_id.picking_type_id.code == 'outgoing':
|
||||
customer_journal_id = \
|
||||
picking_id.env['ir.config_parameter'].sudo(). \
|
||||
get_param('stock_move_invoice.customer_journal_id') or \
|
||||
False
|
||||
if not customer_journal_id:
|
||||
raise UserError(
|
||||
_("Please configure the journal from settings"))
|
||||
invoice_line_list = []
|
||||
for move_ids_without_package in picking_id.move_ids_without_package:
|
||||
vals = (0, 0, {
|
||||
'name': move_ids_without_package.description_picking,
|
||||
'product_id': move_ids_without_package.product_id.id,
|
||||
'price_unit': move_ids_without_package.product_id.lst_price,
|
||||
'account_id': move_ids_without_package.product_id.property_account_income_id.id if
|
||||
move_ids_without_package.product_id.property_account_income_id
|
||||
else move_ids_without_package.product_id.categ_id.property_account_income_categ_id.id,
|
||||
'tax_ids': [(6, 0, [
|
||||
picking_id.company_id.account_sale_tax_id.id])],
|
||||
'quantity': move_ids_without_package.quantity_done,
|
||||
})
|
||||
invoice_line_list.append(vals)
|
||||
invoice = picking_id.env['account.move'].create({
|
||||
'move_type': 'out_invoice',
|
||||
'invoice_origin': picking_id.name,
|
||||
'invoice_user_id': current_user,
|
||||
'narration': picking_id.name,
|
||||
'partner_id': picking_id.partner_id.id,
|
||||
'currency_id': picking_id.env.user.company_id.currency_id.id,
|
||||
'journal_id': int(customer_journal_id),
|
||||
'payment_reference': picking_id.name,
|
||||
'picking_id': picking_id.id,
|
||||
'invoice_line_ids': invoice_line_list,
|
||||
'transfer_ids': self
|
||||
})
|
||||
return invoice
|
||||
|
||||
def create_bill(self):
|
||||
"""This is the function for creating vendor bill
|
||||
from the picking"""
|
||||
for picking_id in self:
|
||||
current_user = self.env.uid
|
||||
if picking_id.picking_type_id.code == 'incoming':
|
||||
vendor_journal_id = picking_id.env[
|
||||
'ir.config_parameter'].sudo().get_param(
|
||||
'stock_move_invoice.vendor_journal_id') or False
|
||||
if not vendor_journal_id:
|
||||
raise UserError(
|
||||
_("Please configure the journal from the settings."))
|
||||
invoice_line_list = []
|
||||
for move_ids_without_package in picking_id. \
|
||||
move_ids_without_package:
|
||||
vals = (0, 0, {
|
||||
'name': move_ids_without_package.description_picking,
|
||||
'product_id': move_ids_without_package.product_id.id,
|
||||
'price_unit':
|
||||
move_ids_without_package.product_id.lst_price,
|
||||
'account_id':
|
||||
move_ids_without_package.product_id.
|
||||
property_account_income_id.id if
|
||||
move_ids_without_package.product_id.
|
||||
property_account_income_id
|
||||
else move_ids_without_package.product_id.categ_id.
|
||||
property_account_income_categ_id.id,
|
||||
'tax_ids': [(6, 0, [
|
||||
picking_id.company_id.account_purchase_tax_id.id])],
|
||||
'quantity': move_ids_without_package.quantity_done,
|
||||
})
|
||||
invoice_line_list.append(vals)
|
||||
invoice = picking_id.env['account.move'].create({
|
||||
'move_type': 'in_invoice',
|
||||
'invoice_origin': picking_id.name,
|
||||
'invoice_user_id': current_user,
|
||||
'narration': picking_id.name,
|
||||
'partner_id': picking_id.partner_id.id,
|
||||
'currency_id':
|
||||
picking_id.env.user.company_id.currency_id.id,
|
||||
'journal_id': int(vendor_journal_id),
|
||||
'payment_reference': picking_id.name,
|
||||
'picking_id': picking_id.id,
|
||||
'invoice_line_ids': invoice_line_list,
|
||||
'transfer_ids': self
|
||||
})
|
||||
return invoice
|
||||
|
||||
def create_customer_credit(self):
|
||||
"""This is the function for creating customer credit note
|
||||
from the picking"""
|
||||
for picking_id in self:
|
||||
current_user = picking_id.env.uid
|
||||
if picking_id.picking_type_id.code == 'incoming':
|
||||
customer_journal_id = \
|
||||
picking_id.env['ir.config_parameter'].sudo(). \
|
||||
get_param('stock_move_invoice.customer_journal_id') or \
|
||||
False
|
||||
if not customer_journal_id:
|
||||
raise UserError(
|
||||
_("Please configure the journal from settings"))
|
||||
invoice_line_list = []
|
||||
for move_ids_without_package in picking_id. \
|
||||
move_ids_without_package:
|
||||
vals = (0, 0, {
|
||||
'name': move_ids_without_package.description_picking,
|
||||
'product_id': move_ids_without_package.product_id.id,
|
||||
'price_unit':
|
||||
move_ids_without_package.product_id.lst_price,
|
||||
'account_id': move_ids_without_package.product_id.
|
||||
property_account_income_id.id if
|
||||
move_ids_without_package.product_id.
|
||||
property_account_income_id
|
||||
else move_ids_without_package.product_id.categ_id.
|
||||
property_account_income_categ_id.id,
|
||||
'tax_ids': [(6, 0, [
|
||||
picking_id.company_id.account_sale_tax_id.id])],
|
||||
'quantity': move_ids_without_package.quantity_done,
|
||||
})
|
||||
invoice_line_list.append(vals)
|
||||
invoice = picking_id.env['account.move'].create({
|
||||
'move_type': 'out_refund',
|
||||
'invoice_origin': picking_id.name,
|
||||
'invoice_user_id': current_user,
|
||||
'narration': picking_id.name,
|
||||
'partner_id': picking_id.partner_id.id,
|
||||
'currency_id':
|
||||
picking_id.env.user.company_id.currency_id.id,
|
||||
'journal_id': int(customer_journal_id),
|
||||
'payment_reference': picking_id.name,
|
||||
'picking_id': picking_id.id,
|
||||
'invoice_line_ids': invoice_line_list,
|
||||
'transfer_ids': self
|
||||
})
|
||||
return invoice
|
||||
|
||||
def create_vendor_credit(self):
|
||||
"""This is the function for creating refund
|
||||
from the picking"""
|
||||
for picking_id in self:
|
||||
current_user = self.env.uid
|
||||
if picking_id.picking_type_id.code == 'outgoing':
|
||||
vendor_journal_id = picking_id.env[
|
||||
'ir.config_parameter'].sudo().get_param(
|
||||
'stock_move_invoice.vendor_journal_id') or False
|
||||
if not vendor_journal_id:
|
||||
raise UserError(
|
||||
_("Please configure the journal from the settings."))
|
||||
invoice_line_list = []
|
||||
for move_ids_without_package in picking_id. \
|
||||
move_ids_without_package:
|
||||
vals = (0, 0, {
|
||||
'name': move_ids_without_package.description_picking,
|
||||
'product_id': move_ids_without_package.product_id.id,
|
||||
'price_unit':
|
||||
move_ids_without_package.product_id.lst_price,
|
||||
'account_id': move_ids_without_package.product_id.
|
||||
property_account_income_id.id if
|
||||
move_ids_without_package.product_id.
|
||||
property_account_income_id
|
||||
else move_ids_without_package.product_id.categ_id.
|
||||
property_account_income_categ_id.id,
|
||||
'tax_ids': [(6, 0, [
|
||||
picking_id.company_id.account_purchase_tax_id.id])],
|
||||
'quantity': move_ids_without_package.quantity_done,
|
||||
})
|
||||
invoice_line_list.append(vals)
|
||||
invoice = picking_id.env['account.move'].create({
|
||||
'move_type': 'in_refund',
|
||||
'invoice_origin': picking_id.name,
|
||||
'invoice_user_id': current_user,
|
||||
'narration': picking_id.name,
|
||||
'partner_id': picking_id.partner_id.id,
|
||||
'currency_id':
|
||||
picking_id.env.user.company_id.currency_id.id,
|
||||
'journal_id': int(vendor_journal_id),
|
||||
'payment_reference': picking_id.name,
|
||||
'picking_id': picking_id.id,
|
||||
'invoice_line_ids': invoice_line_list,
|
||||
'transfer_ids': self
|
||||
})
|
||||
return invoice
|
||||
|
||||
def action_open_picking_invoice(self):
|
||||
"""This is the function of the smart button which redirect to the
|
||||
invoice related to the current picking"""
|
||||
return {
|
||||
'name': 'Invoices',
|
||||
'type': 'ir.actions.act_window',
|
||||
'view_mode': 'tree,form',
|
||||
'res_model': 'account.move',
|
||||
'domain': [('transfer_ids', 'in', self.id)],
|
||||
'context': {'create': False},
|
||||
'target': 'current'
|
||||
}
|
||||
|
||||
def action_create_multi_invoice_for_multi_transfer(self):
|
||||
"""This is the function for creating customer invoice
|
||||
from the picking"""
|
||||
picking_type = list(self.picking_type_id)
|
||||
if all(first == picking_type[0] for first in picking_type):
|
||||
if self.picking_type_id.code == 'outgoing':
|
||||
partner = list(self.partner_id)
|
||||
if all(first == partner[0] for first in partner):
|
||||
partner_id = self.partner_id
|
||||
invoice_line_list = []
|
||||
customer_journal_id = \
|
||||
self.env['ir.config_parameter'].sudo(). \
|
||||
get_param('stock_move_invoice.customer_journal_id') \
|
||||
or False
|
||||
if not customer_journal_id:
|
||||
raise UserError(
|
||||
_("Please configure the journal from settings"))
|
||||
for picking_id in self:
|
||||
for move_ids_without_package in picking_id. \
|
||||
move_ids_without_package:
|
||||
vals = (0, 0, {
|
||||
'name':
|
||||
move_ids_without_package.description_picking
|
||||
,
|
||||
'product_id':
|
||||
move_ids_without_package.product_id.id,
|
||||
'price_unit': move_ids_without_package.
|
||||
product_id.lst_price,
|
||||
'account_id': move_ids_without_package.
|
||||
product_id.property_account_income_id.id if
|
||||
move_ids_without_package.product_id.
|
||||
property_account_income_id
|
||||
else move_ids_without_package.
|
||||
product_id.categ_id.
|
||||
property_account_income_categ_id.id,
|
||||
'tax_ids': [(6, 0, [picking_id.company_id.
|
||||
account_purchase_tax_id.id])],
|
||||
'quantity':
|
||||
move_ids_without_package.quantity_done,
|
||||
})
|
||||
invoice_line_list.append(vals)
|
||||
invoice = self.env['account.move'].create({
|
||||
'move_type': 'out_invoice',
|
||||
'invoice_origin': picking_id.name,
|
||||
'invoice_user_id': self.env.uid,
|
||||
'narration': picking_id.name,
|
||||
'partner_id': partner_id.id,
|
||||
'currency_id':
|
||||
picking_id.env.user.company_id.currency_id.id,
|
||||
'journal_id': int(customer_journal_id),
|
||||
'payment_reference': picking_id.name,
|
||||
'invoice_line_ids': invoice_line_list,
|
||||
'transfer_ids': self
|
||||
})
|
||||
else:
|
||||
for picking_id in self:
|
||||
picking_id.create_invoice()
|
||||
elif self.picking_type_id.code == 'incoming':
|
||||
partner = list(self.partner_id)
|
||||
if all(first == partner[0] for first in partner):
|
||||
partner_id = self.partner_id
|
||||
bill_line_list = []
|
||||
vendor_journal_id = \
|
||||
self.env['ir.config_parameter'].sudo(). \
|
||||
get_param('stock_move_invoice.vendor_journal_id') \
|
||||
or False
|
||||
if not vendor_journal_id:
|
||||
raise UserError(_("Please configure the journal from "
|
||||
"the settings."))
|
||||
for picking_id in self:
|
||||
for move_ids_without_package in picking_id. \
|
||||
move_ids_without_package:
|
||||
vals = (0, 0, {
|
||||
'name':
|
||||
move_ids_without_package.description_picking
|
||||
,
|
||||
'product_id':
|
||||
move_ids_without_package.product_id.id,
|
||||
'price_unit': move_ids_without_package.
|
||||
product_id.lst_price,
|
||||
'account_id': move_ids_without_package.
|
||||
product_id.property_account_income_id.id if
|
||||
move_ids_without_package.product_id.
|
||||
property_account_income_id
|
||||
else move_ids_without_package.
|
||||
product_id.categ_id.
|
||||
property_account_income_categ_id.id,
|
||||
'tax_ids': [(6, 0, [picking_id.company_id.
|
||||
account_purchase_tax_id.id])],
|
||||
'quantity':
|
||||
move_ids_without_package.quantity_done,
|
||||
})
|
||||
bill_line_list.append(vals)
|
||||
invoice = self.env['account.move'].create({
|
||||
'move_type': 'in_invoice',
|
||||
'invoice_origin': picking_id.name,
|
||||
'invoice_user_id': self.env.uid,
|
||||
'narration': picking_id.name,
|
||||
'partner_id': partner_id.id,
|
||||
'currency_id':
|
||||
picking_id.env.user.company_id.currency_id.id,
|
||||
'journal_id': int(vendor_journal_id),
|
||||
'payment_reference': picking_id.name,
|
||||
'picking_id': picking_id.id,
|
||||
'invoice_line_ids': bill_line_list,
|
||||
'transfer_ids': self
|
||||
})
|
||||
else:
|
||||
for picking_id in self:
|
||||
picking_id.create_bill()
|
||||
else:
|
||||
raise UserError(
|
||||
_("Please select single type transfer"))
|
||||
|
||||
|
||||
class StockReturnInvoicePicking(models.TransientModel):
|
||||
_inherit = 'stock.return.picking'
|
||||
|
||||
def _create_returns(self):
|
||||
"""in this function the picking is marked as return"""
|
||||
|
||||
new_picking, pick_type_id = \
|
||||
super(StockReturnInvoicePicking, self)._create_returns()
|
||||
picking = self.env['stock.picking'].browse(new_picking)
|
||||
picking.write({'is_return': True})
|
||||
return new_picking, pick_type_id
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_picking_invoice_wizard_manager_id,access_picking_invoice_wizard_manager,model_picking_invoice_wizard,base.group_erp_manager,1,1,1,1
|
||||
access_picking_invoice_wizard_user_id,access_picking_invoice_wizard_user,model_picking_invoice_wizard,base.group_user,1,1,1,1
|
||||
|
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 310 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 576 B |
|
After Width: | Height: | Size: 733 B |
|
After Width: | Height: | Size: 911 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 673 B |
|
After Width: | Height: | Size: 878 B |
|
After Width: | Height: | Size: 653 B |
|
After Width: | Height: | Size: 905 B |
|
After Width: | Height: | Size: 839 B |
|
After Width: | Height: | Size: 427 B |
|
After Width: | Height: | Size: 627 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 988 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 589 B |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 967 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 5 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 388 KiB |
|
After Width: | Height: | Size: 397 KiB |
|
After Width: | Height: | Size: 390 KiB |
|
After Width: | Height: | Size: 195 KiB |
|
After Width: | Height: | Size: 328 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 201 KiB |
|
After Width: | Height: | Size: 161 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
|
@ -0,0 +1,576 @@
|
|||
<div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;"
|
||||
xmlns="http://www.w3.org/1999/html">
|
||||
<!-- TITLE BAR -->
|
||||
<div
|
||||
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
|
||||
<img src="assets/misc/cybrosys-logo.png" width="42" height="42" style="width: 42px; height: 42px;" />
|
||||
<div>
|
||||
<div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
|
||||
class="mr-2">
|
||||
<i class="fa fa-check mr-1"></i>Community
|
||||
</div>
|
||||
<div style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
|
||||
class="mr-2">
|
||||
<i class="fa fa-check mr-1"></i>Enterprise
|
||||
</div>
|
||||
<div style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
|
||||
class="mr-2">
|
||||
<i class="fa fa-check mr-1"></i>Odoo.sh
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF TITLE BAR -->
|
||||
|
||||
<!-- APP HERO -->
|
||||
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
|
||||
Invoice From Stock Picking</h1>
|
||||
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">Module for creating customer invoice, vendor bill, credit note & refund from stock picking</p>
|
||||
<!-- END OF APP HERO -->
|
||||
<img src="assets/screenshots/hero.gif"
|
||||
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;" />
|
||||
|
||||
</div>
|
||||
|
||||
<!-- NAVIGATION SECTION -->
|
||||
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
|
||||
<div class="d-flex justify-content-center align-items-center mr-2"
|
||||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
|
||||
<img src="assets/misc/compass.png" />
|
||||
</div>
|
||||
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Explore This
|
||||
Module</h2>
|
||||
</div>
|
||||
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
|
||||
<div class="col-sm-12 col-md-6 my-3">
|
||||
<a href="#overview">
|
||||
<div class="d-flex justify-content-between align-items-center"
|
||||
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
|
||||
<div>
|
||||
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
|
||||
<span
|
||||
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
|
||||
more about this
|
||||
module</span>
|
||||
</div>
|
||||
<img src="assets/misc/right-arrow.png" width="36" height="36" />
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-6 my-3">
|
||||
<a href="#features">
|
||||
<div class="d-flex justify-content-between align-items-center"
|
||||
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
|
||||
<div>
|
||||
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
|
||||
<span
|
||||
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
|
||||
features of this
|
||||
module</span>
|
||||
</div>
|
||||
<img src="assets/misc/right-arrow.png" width="36" height="36" />
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-6 my-3">
|
||||
<a href="#screenshots">
|
||||
<div class="d-flex justify-content-between align-items-center"
|
||||
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
|
||||
<div>
|
||||
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
|
||||
<span
|
||||
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
|
||||
screenshots for this
|
||||
module</span>
|
||||
</div>
|
||||
<img src="assets/misc/right-arrow.png" width="36" height="36" />
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF NAVIGATION SECTION -->
|
||||
|
||||
<!-- OVERVIEW SECTION -->
|
||||
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview">
|
||||
<div class="d-flex justify-content-center align-items-center mr-2"
|
||||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
|
||||
<img src="assets/misc/pie-chart.png" />
|
||||
</div>
|
||||
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview
|
||||
</h2>
|
||||
</div>
|
||||
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
|
||||
<div class="col-sm-12 py-4">
|
||||
|
||||
This module helps to create invoice,bill,credit note and refund from individual picking.
|
||||
so that users can easly create invoice and bill in the transfer section.
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF OVERVIEW SECTION -->
|
||||
|
||||
<!-- FEATURES SECTION -->
|
||||
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
|
||||
<div class="d-flex justify-content-center align-items-center mr-2"
|
||||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
|
||||
<img src="assets/misc/features.png" />
|
||||
</div>
|
||||
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features
|
||||
</h2>
|
||||
</div>
|
||||
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
|
||||
<div class="col-sm-12 col-md-6">
|
||||
<div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px">
|
||||
<img src="assets/misc/check-box.png" class="mr-2" />
|
||||
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Creating invoice, bill, credit note & refund from individual picking</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
|
||||
<img src="assets/misc/check-box.png" class="mr-2" />
|
||||
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Creating invoice documents by selecting multiple documents..</span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px">
|
||||
<img src="assets/misc/check-box.png" class="mr-2" />
|
||||
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Option for configuring the journals from the settings.</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF FEATURES SECTION -->
|
||||
|
||||
<!-- SCREENSHOTS SECTION -->
|
||||
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots">
|
||||
<div class="d-flex justify-content-center align-items-center mr-2"
|
||||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
|
||||
<img src="assets/misc/pictures.png" />
|
||||
</div>
|
||||
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots
|
||||
</h2>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
|
||||
<div style="display: block; margin: 30px auto;">
|
||||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Create bill in transfer
|
||||
</h3>
|
||||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">when we creating a receipts there is an option for making vendor bill in the same page</p>
|
||||
<img src="assets/screenshots/demo1.png" class="img-thumbnail">
|
||||
</div>
|
||||
|
||||
<div style="display: block; margin: 30px auto;">
|
||||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Create invoice in transfer
|
||||
</h3>
|
||||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">when we creating a delivery operation there is an option for making bill in the same page</p>
|
||||
<img src="assets/screenshots/demo2.png" class="img-thumbnail">
|
||||
</div>
|
||||
|
||||
<div style="display: block; margin: 30px auto;">
|
||||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Create invoice/bill for multiple transfer with same customer
|
||||
</h3>
|
||||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">select multiple transfer with same transfer type and with same partner from the tree view. It will create a single invoice/bill with all the products.</p>
|
||||
<img src="assets/screenshots/demo6.png" class="img-thumbnail">
|
||||
</div>
|
||||
|
||||
<div style="display: block; margin: 30px auto;">
|
||||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Create invoice/bill for multiple transfer with different customer
|
||||
</h3>
|
||||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">select multiple transfer with same transfer type and with different partner from the tree view. It will create a single invoice/bill for each transfer.</p>
|
||||
<img src="assets/screenshots/demo7.png" class="img-thumbnail">
|
||||
</div>
|
||||
|
||||
<div style="display: block; margin: 30px auto;">
|
||||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">User error for different type transfer
|
||||
</h3>
|
||||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">It shows a user error for the selection of different type transfer.</p>
|
||||
<img src="assets/screenshots/demo8.png" class="img-thumbnail">
|
||||
</div>
|
||||
|
||||
<div style="display: block; margin: 30px auto;">
|
||||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">invoice/bill smart button
|
||||
</h3>
|
||||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"></p>
|
||||
<img src="assets/screenshots/demo3.png" class="img-thumbnail">
|
||||
</div>
|
||||
<div style="display: block; margin: 30px auto;">
|
||||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Configure the customer invoice & vendor bill journals from the settings
|
||||
</h3>
|
||||
|
||||
<img src="assets/screenshots/demo4.png" class="img-thumbnail">
|
||||
</div>
|
||||
<div style="display: block; margin: 30px auto;">
|
||||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Configure from the settings</h3>
|
||||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Configure the customer invoice & vendor bill journals from the settings</p>
|
||||
<img src="assets/screenshots/demo5.png" class="img-thumbnail">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF SCREENSHOTS SECTION -->
|
||||
|
||||
<!-- RELATED PRODUCTS -->
|
||||
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
|
||||
<div class="d-flex justify-content-center align-items-center mr-2"
|
||||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
|
||||
<img src="assets/misc/categories.png" />
|
||||
</div>
|
||||
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Related
|
||||
Products
|
||||
</h2>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div id="demo1" class="row carousel slide" data-ride="carousel">
|
||||
<!-- The slideshow -->
|
||||
<div class="carousel-inner" style="padding: 30px;">
|
||||
<div class="carousel-item" style="min-height: 198.656px;">
|
||||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
|
||||
<a href="https://apps.odoo.com/apps/modules/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/1.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/export_stockinfo_xls/" target="_blank">
|
||||
<div style="border-radius:10px">
|
||||
<img class="img img-responsive center-block" style="border-radius: 0px;"
|
||||
src="assets/modules/2.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/barcode_scanning_sale_purchase/"
|
||||
target="_blank">
|
||||
<div style="border-radius:10px">
|
||||
<img class="img img-responsive center-block" style="border-radius: 0px;"
|
||||
src="assets/modules/2.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/14.0/product_return_pos/" target="_blank">
|
||||
<div style="border-radius:10px">
|
||||
<img class="img img-responsive center-block" style="border-radius: 0px;"
|
||||
src="assets/modules/4.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/14.0/point_of_sale_logo" target="_blank">
|
||||
<div style="border-radius:10px">
|
||||
<img class="img img-responsive center-block" style="border-radius: 0px;"
|
||||
src="assets/modules/5.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/14.0/invoice_format_editor/" target="_blank">
|
||||
<div style="border-radius:10px">
|
||||
<img class="img img-responsive center-block" style="border-radius: 0px;"
|
||||
src="assets/modules/6.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 RELATED PRODUCTS -->
|
||||
|
||||
<!-- OUR SERVICES -->
|
||||
|
||||
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
|
||||
<div class="d-flex justify-content-center align-items-center mr-2"
|
||||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
|
||||
<img src="assets/misc/star.png" />
|
||||
</div>
|
||||
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="container my-5">
|
||||
<div class="row">
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Customization</h6>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Implementation</h6>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Support</h6>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Hire
|
||||
Odoo
|
||||
Developer</h6>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Integration</h6>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Migration</h6>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Consultancy</h6>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Implementation</h6>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
|
||||
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
|
||||
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
|
||||
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
|
||||
</div>
|
||||
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
|
||||
Odoo
|
||||
Licensing Consultancy</h6>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- END OF END OF OUR SERVICES -->
|
||||
|
||||
<!-- OUR INDUSTRIES -->
|
||||
|
||||
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
|
||||
<div class="d-flex justify-content-center align-items-center mr-2"
|
||||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
|
||||
<img src="assets/misc/corporate.png" />
|
||||
</div>
|
||||
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our
|
||||
Industries
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class="container my-5">
|
||||
<div class="row">
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
|
||||
Trading
|
||||
</h5>
|
||||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
|
||||
Easily procure
|
||||
and
|
||||
sell your products</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
|
||||
POS
|
||||
</h5>
|
||||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
|
||||
Easy
|
||||
configuration
|
||||
and convivial experience</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
|
||||
Education
|
||||
</h5>
|
||||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
|
||||
A platform for
|
||||
educational management</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px"
|
||||
width="48px">
|
||||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
|
||||
Manufacturing
|
||||
</h5>
|
||||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
|
||||
Plan, track and
|
||||
schedule your operations</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
|
||||
E-commerce & Website
|
||||
</h5>
|
||||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
|
||||
Mobile
|
||||
friendly,
|
||||
awe-inspiring product pages</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
|
||||
Service Management
|
||||
</h5>
|
||||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
|
||||
Keep track of
|
||||
services and invoice</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
|
||||
Restaurant
|
||||
</h5>
|
||||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
|
||||
Run your bar or
|
||||
restaurant methodically</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3">
|
||||
<div class="my-4 d-flex flex-column justify-content-center"
|
||||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
|
||||
<img src="assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
|
||||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
|
||||
Hotel Management
|
||||
</h5>
|
||||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
|
||||
An
|
||||
all-inclusive
|
||||
hotel management application</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- END OF END OF OUR INDUSTRIES -->
|
||||
|
||||
<!-- SUPPORT -->
|
||||
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
|
||||
<div class="d-flex justify-content-center align-items-center mr-2"
|
||||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
|
||||
<img src="assets/misc/customer-support.png" />
|
||||
</div>
|
||||
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support
|
||||
</h2>
|
||||
</div>
|
||||
<div class="container mt-5">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-6">
|
||||
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
|
||||
<div class="mr-4"
|
||||
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
|
||||
<img src="assets/misc/support.png" height="48" width="48" style="width: 42px; height: 42px;" />
|
||||
</div>
|
||||
<div>
|
||||
<h4>Need Help?</h4>
|
||||
<p style="line-height: 100%;">Got questions or need help? Get in touch.</p>
|
||||
<a href="mailto:odoo@cybrosys.com">
|
||||
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
|
||||
odoo@cybrosys.com</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-6">
|
||||
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
|
||||
<div class="mr-4"
|
||||
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
|
||||
<img src="assets/misc/whatsapp.png" height="52" width="52" style="width: 52px; height: 52px;" />
|
||||
</div>
|
||||
<div>
|
||||
<h4>WhatsApp</h4>
|
||||
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
|
||||
<a href="https://api.whatsapp.com/send?phone=918606827707">
|
||||
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068
|
||||
27707</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
|
||||
<img src="assets/misc/logo.png" width="144" height="31"
|
||||
style="width:144px; height: 31px; margin-top: 40px;" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF SUPPORT -->
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- inheriting account form view-->
|
||||
<record id="account_move_form_view_inherited" model="ir.ui.view">
|
||||
<field name="name">account.move.form.view.inherited</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="inherit_id" ref="account.view_move_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='ref']" position="after">
|
||||
<field name="picking_id"/>
|
||||
<field name="transfer_ids" widget="many2many_tags"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- inheriting the res.config.settings view to add journals fields-->
|
||||
<record id="res_config_settings_invoice_modification" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.invoice.modification</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="priority" eval="10"/>
|
||||
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@data-key='account']" position="inside">
|
||||
<h2>Invoice From Stock Picking</h2>
|
||||
<div class="row mt16 o_settings_container">
|
||||
<div class="col-12 col-lg-6 o_setting_box"
|
||||
title="These taxes are set in any new product created.">
|
||||
<div class="o_setting_left_pane"/>
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Journals</span>
|
||||
<span class="fa fa-lg fa-building-o"
|
||||
title="Values set here are company-specific."
|
||||
aria-label="Values set here are company-specific."
|
||||
role="img"/>
|
||||
<div class="text-muted">
|
||||
Journals which should apply for the invoice
|
||||
creation from stock picking
|
||||
</div>
|
||||
<div class="content-group">
|
||||
<div class="row mt16">
|
||||
<label string="Sales Journal"
|
||||
for="customer_journal_id"
|
||||
class="col-lg-3 o_light_label"/>
|
||||
<field name="customer_journal_id"
|
||||
domain="[('type', '=', 'sale')]"/>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label string="Purchase Journal"
|
||||
for="vendor_journal_id"
|
||||
class="col-lg-3 o_light_label"/>
|
||||
<field name="vendor_journal_id"
|
||||
domain="[('type', '=', 'purchase')]"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- inheriting stock.picking form view to add invoice/bill button-->
|
||||
<record id="stock_picking_form_view_inherited" model="ir.ui.view">
|
||||
<field name="name">stock.picking.form.view.inherited</field>
|
||||
<field name="model">stock.picking</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='picking_type_id']" position="after">
|
||||
<field name="operation_code" invisible="1"/>
|
||||
<field name="is_return" invisible="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<button name="action_open_picking_invoice" type="object"
|
||||
class="oe_stat_button" icon="fa-file-text"
|
||||
attrs="{'invisible': [('invoice_count','=', 0)]}">
|
||||
<field name="invoice_count" widget="statinfo"/>
|
||||
</button>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_toggle_is_locked']"
|
||||
position="after">
|
||||
<button name="create_invoice" class="oe_highlight"
|
||||
string="Create Invoice" type="object"
|
||||
attrs="{'invisible': ['|','|','|',('invoice_count','!=', 0),('state','!=','done'),('operation_code','=','incoming'),('is_return','=',True)]}"/>
|
||||
<button name="create_bill" class="oe_highlight"
|
||||
string="Create Bill" type="object"
|
||||
attrs="{'invisible': ['|','|','|',('invoice_count','!=', 0),('state','!=','done'),('operation_code','=','outgoing'),('is_return','=',True)]}"/>
|
||||
<button name="create_customer_credit" class="oe_highlight"
|
||||
string="Create Credit Note" type="object"
|
||||
attrs="{'invisible': ['|','|','|',('invoice_count','!=', 0),('state','!=','done'),('operation_code','=','outgoing'),('is_return','=',False)]}"/>
|
||||
<button name="create_vendor_credit" class="oe_highlight"
|
||||
string="Create Vendor Credit" type="object"
|
||||
attrs="{'invisible': ['|','|','|',('invoice_count','!=', 0),('state','!=','done'),('operation_code','=','incoming'),('is_return','=',False)]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<!-- add invoice/bill create menu in tree view action-->
|
||||
<record id="action_create_invoice_for_multi_transfer"
|
||||
model="ir.actions.server">
|
||||
<field name="name">Create Invoice/Bill</field>
|
||||
<field name="model_id" ref="stock.model_stock_picking"/>
|
||||
<field name="binding_model_id" ref="stock.model_stock_picking"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
if records:
|
||||
action = records.action_create_multi_invoice_for_multi_transfer()
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>)
|
||||
# Author: SAYOOJ A O (<https://www.cybrosys.com>)
|
||||
#
|
||||
# This program is free software: you can modify
|
||||
# it under the terms of the GNU Affero General Public License (AGPL) as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# 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 for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
###############################################################################
|
||||
from . import picking_invoice_wizard
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Cybrosys Technologies Pvt. Ltd.
|
||||
#
|
||||
# Copyright (C) 2020-TODAY Cybrosys Technologies (<https://www.cybrosys.com>)
|
||||
# Author: SAYOOJ A O (<https://www.cybrosys.com>)
|
||||
#
|
||||
# This program is free software: you can modify
|
||||
# it under the terms of the GNU Affero General Public License (AGPL) as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# 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 for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
###############################################################################
|
||||
from odoo import models
|
||||
|
||||
|
||||
class PickingInvoiceWizard(models.TransientModel):
|
||||
"""model for picking invoice wizard"""
|
||||
_name = 'picking.invoice.wizard'
|
||||
_description = "Picking Invoice Wizard"
|
||||
|
||||
def picking_multi_invoice(self):
|
||||
"""Fucntion to create multiple invoice for multiple
|
||||
picking from wizard"""
|
||||
active_ids = self._context.get('active_ids')
|
||||
picking_ids = self.env['stock.picking'].browse(active_ids)
|
||||
picking_id = picking_ids.filtered(lambda x: x.state == 'done' and x.invoice_count == 0)
|
||||
for picking in picking_id:
|
||||
if picking.picking_type_id.code == 'incoming' and not picking.is_return:
|
||||
picking.create_bill()
|
||||
if picking.picking_type_id.code == 'outgoing' and not picking.is_return:
|
||||
picking.create_invoice()
|
||||
if picking.picking_type_id.code == 'incoming' and picking.is_return:
|
||||
picking.create_vendor_credit()
|
||||
if picking.picking_type_id.code == 'outgoing' and picking.is_return:
|
||||
picking.create_customer_credit()
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- view for picking invoice wizard-->
|
||||
<record id="picking_invoice_wizard_view_form" model="ir.ui.view">
|
||||
<field name="name">picking.invoice.wizard.view.form</field>
|
||||
<field name="model">picking.invoice.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Generate Invoice For Multiple Picking">
|
||||
<group col="4">
|
||||
<span>Invoice will generate for selected picking</span>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="picking_multi_invoice" string="Create Invoice"
|
||||
type="object" class="oe_highlight"/>
|
||||
<button string="Cancel" class="btn btn-default"
|
||||
special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<act_window
|
||||
id="action_picking_multi_invoice"
|
||||
name="Create Invoices"
|
||||
res_model="picking.invoice.wizard"
|
||||
binding_model="stock.picking"
|
||||
binding_views="list"
|
||||
view_mode="form"
|
||||
target="new"
|
||||
/>
|
||||
|
||||
</odoo>
|
||||
|
||||
|
||||