diff --git a/stock_move_invoice/README.rst b/stock_move_invoice/README.rst new file mode 100644 index 000000000..4507193e7 --- /dev/null +++ b/stock_move_invoice/README.rst @@ -0,0 +1,42 @@ +Invoice From Stock Picking +========================== +* Enables the option for creating invoice from stock picking + +Installation +============ +- www.odoo.com/documentation/14.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 `__ + +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 +========== +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ diff --git a/stock_move_invoice/__init__.py b/stock_move_invoice/__init__.py new file mode 100644 index 000000000..f5dbb7050 --- /dev/null +++ b/stock_move_invoice/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 models +from . import wizard diff --git a/stock_move_invoice/__manifest__.py b/stock_move_invoice/__manifest__.py new file mode 100644 index 000000000..cb20aaacc --- /dev/null +++ b/stock_move_invoice/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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': "Invoice From Stock Picking", + 'version': '15.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, +} diff --git a/stock_move_invoice/doc/RELEASE_NOTES.md b/stock_move_invoice/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..9f860b389 --- /dev/null +++ b/stock_move_invoice/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 06.11.2020 +#### Version 15.0.1.0.0 +##### ADD +- Initial commit diff --git a/stock_move_invoice/models/__init__.py b/stock_move_invoice/models/__init__.py new file mode 100644 index 000000000..218cd9fba --- /dev/null +++ b/stock_move_invoice/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 account_move +from . import res_config_settings +from . import stock_picking diff --git a/stock_move_invoice/models/account_move.py b/stock_move_invoice/models/account_move.py new file mode 100644 index 000000000..a30b36df9 --- /dev/null +++ b/stock_move_invoice/models/account_move.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 + + +class AccountMove(models.Model): + _inherit = 'account.move' + + picking_id = fields.Many2one('stock.picking', string='Picking') diff --git a/stock_move_invoice/models/res_config_settings.py b/stock_move_invoice/models/res_config_settings.py new file mode 100644 index 000000000..e43712180 --- /dev/null +++ b/stock_move_invoice/models/res_config_settings.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 Settings(models.TransientModel): + _inherit = 'res.config.settings' + customer_journal_id = fields.Many2one('account.journal', string='Customer Journal', + config_parameter='stock_move_invoice.customer_journal_id') + vendor_journal_id = fields.Many2one('account.journal', string='Vendor Journal', + config_parameter='stock_move_invoice.vendor_journal_id') diff --git a/stock_move_invoice/models/stock_picking.py b/stock_move_invoice/models/stock_picking.py new file mode 100644 index 000000000..d8142be78 --- /dev/null +++ b/stock_move_invoice/models/stock_picking.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies(). +# Author: Sayooj A O() +# +# 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 odoo.exceptions import UserError + + +class StockPicking(models.Model): + _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([('invoice_origin', '=', picking_id.name)]) + 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 + }) + 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 + }) + 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 + }) + 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 + }) + 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': [('invoice_origin', '=', self.name)], + 'context': {'create': False}, + 'target': 'current' + } + + +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 diff --git a/stock_move_invoice/security/ir.model.access.csv b/stock_move_invoice/security/ir.model.access.csv new file mode 100644 index 000000000..5fc94b439 --- /dev/null +++ b/stock_move_invoice/security/ir.model.access.csv @@ -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 \ No newline at end of file diff --git a/stock_move_invoice/static/description/assets/icons/check.png b/stock_move_invoice/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/check.png differ diff --git a/stock_move_invoice/static/description/assets/icons/chevron.png b/stock_move_invoice/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/chevron.png differ diff --git a/stock_move_invoice/static/description/assets/icons/cogs.png b/stock_move_invoice/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/cogs.png differ diff --git a/stock_move_invoice/static/description/assets/icons/consultation.png b/stock_move_invoice/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/consultation.png differ diff --git a/stock_move_invoice/static/description/assets/icons/ecom-black.png b/stock_move_invoice/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/ecom-black.png differ diff --git a/stock_move_invoice/static/description/assets/icons/education-black.png b/stock_move_invoice/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/education-black.png differ diff --git a/stock_move_invoice/static/description/assets/icons/hotel-black.png b/stock_move_invoice/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/hotel-black.png differ diff --git a/stock_move_invoice/static/description/assets/icons/license.png b/stock_move_invoice/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/license.png differ diff --git a/stock_move_invoice/static/description/assets/icons/lifebuoy.png b/stock_move_invoice/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/lifebuoy.png differ diff --git a/stock_move_invoice/static/description/assets/icons/logo.png b/stock_move_invoice/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/logo.png differ diff --git a/stock_move_invoice/static/description/assets/icons/manufacturing-black.png b/stock_move_invoice/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/manufacturing-black.png differ diff --git a/stock_move_invoice/static/description/assets/icons/pos-black.png b/stock_move_invoice/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/pos-black.png differ diff --git a/stock_move_invoice/static/description/assets/icons/puzzle.png b/stock_move_invoice/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/puzzle.png differ diff --git a/stock_move_invoice/static/description/assets/icons/restaurant-black.png b/stock_move_invoice/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/restaurant-black.png differ diff --git a/stock_move_invoice/static/description/assets/icons/service-black.png b/stock_move_invoice/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/service-black.png differ diff --git a/stock_move_invoice/static/description/assets/icons/trading-black.png b/stock_move_invoice/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/trading-black.png differ diff --git a/stock_move_invoice/static/description/assets/icons/training.png b/stock_move_invoice/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/training.png differ diff --git a/stock_move_invoice/static/description/assets/icons/update.png b/stock_move_invoice/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/update.png differ diff --git a/stock_move_invoice/static/description/assets/icons/user.png b/stock_move_invoice/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/user.png differ diff --git a/stock_move_invoice/static/description/assets/icons/wrench.png b/stock_move_invoice/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/stock_move_invoice/static/description/assets/icons/wrench.png differ diff --git a/stock_move_invoice/static/description/assets/modules/1.png b/stock_move_invoice/static/description/assets/modules/1.png new file mode 100644 index 000000000..924a65196 Binary files /dev/null and b/stock_move_invoice/static/description/assets/modules/1.png differ diff --git a/stock_move_invoice/static/description/assets/modules/2.png b/stock_move_invoice/static/description/assets/modules/2.png new file mode 100644 index 000000000..4e4ea0e51 Binary files /dev/null and b/stock_move_invoice/static/description/assets/modules/2.png differ diff --git a/stock_move_invoice/static/description/assets/modules/3.png b/stock_move_invoice/static/description/assets/modules/3.png new file mode 100644 index 000000000..4be2248a4 Binary files /dev/null and b/stock_move_invoice/static/description/assets/modules/3.png differ diff --git a/stock_move_invoice/static/description/assets/modules/4.png b/stock_move_invoice/static/description/assets/modules/4.png new file mode 100644 index 000000000..3afc14722 Binary files /dev/null and b/stock_move_invoice/static/description/assets/modules/4.png differ diff --git a/stock_move_invoice/static/description/assets/modules/5.png b/stock_move_invoice/static/description/assets/modules/5.png new file mode 100644 index 000000000..cea66b05f Binary files /dev/null and b/stock_move_invoice/static/description/assets/modules/5.png differ diff --git a/stock_move_invoice/static/description/assets/modules/6.png b/stock_move_invoice/static/description/assets/modules/6.png new file mode 100644 index 000000000..0c9bb377e Binary files /dev/null and b/stock_move_invoice/static/description/assets/modules/6.png differ diff --git a/stock_move_invoice/static/description/assets/screenshots/hero.png b/stock_move_invoice/static/description/assets/screenshots/hero.png new file mode 100644 index 000000000..7f8e8faef Binary files /dev/null and b/stock_move_invoice/static/description/assets/screenshots/hero.png differ diff --git a/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-1.png b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-1.png new file mode 100644 index 000000000..d394185ff Binary files /dev/null and b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-1.png differ diff --git a/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-2.png b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-2.png new file mode 100644 index 000000000..f0f9e5510 Binary files /dev/null and b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-2.png differ diff --git a/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-3.png b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-3.png new file mode 100644 index 000000000..2ab2a42b5 Binary files /dev/null and b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-3.png differ diff --git a/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-4.png b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-4.png new file mode 100644 index 000000000..311e616ef Binary files /dev/null and b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-4.png differ diff --git a/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-5.png b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-5.png new file mode 100644 index 000000000..dab7f4060 Binary files /dev/null and b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-5.png differ diff --git a/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-6.png b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-6.png new file mode 100644 index 000000000..5672ad310 Binary files /dev/null and b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-6.png differ diff --git a/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-7.png b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-7.png new file mode 100644 index 000000000..6f3b0eb75 Binary files /dev/null and b/stock_move_invoice/static/description/assets/screenshots/stock_move_invoice-7.png differ diff --git a/stock_move_invoice/static/description/banner.png b/stock_move_invoice/static/description/banner.png new file mode 100644 index 000000000..d7b35a457 Binary files /dev/null and b/stock_move_invoice/static/description/banner.png differ diff --git a/stock_move_invoice/static/description/icon.png b/stock_move_invoice/static/description/icon.png new file mode 100644 index 000000000..741692142 Binary files /dev/null and b/stock_move_invoice/static/description/icon.png differ diff --git a/stock_move_invoice/static/description/index.html b/stock_move_invoice/static/description/index.html new file mode 100644 index 000000000..34783ec36 --- /dev/null +++ b/stock_move_invoice/static/description/index.html @@ -0,0 +1,626 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+ +
+
+
+
+ +
+
+
+

+ Invoice From Stock Picking

+

+ Module for creating customer invoice, vendor bill, credit note & refund from stock picking +

+ +
+
+ + + + +
+
+

+ Overview +

+
+ +
+

+ This module helps to create invoice,bill,credit note and refund from individual picking.

+ +
+
+ + +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ + Creating invoice, bill, credit note & refund from individual picking.

+
+
+
+
+ +
+
+

+ Creating invoice documents by selecting multiple documents.

+
+
+
+
+ +
+
+

+ Option for configuring the journals from the settings.

+
+
+ +
+ +
+
+

+ Screenshots +

+
+
+

+ Installable from Apps

+

+ We can install the module Invoice from stock picking from apps.

+ +
+
+

+ Configure the customer invoice & vendor bill journals from the settings

+

+ We can configure the customer invoice and vendor bill journals from the settings of invoice.

+ +
+ +
+

+ Option to create vendor bill once receipt shipment is valdated

+

+ When a receipt shipment is validated we will have the option for creating a Vednor bill.

+ +
+ +
+

+ Option to view bill after creation

+

+ After the creation of the bill we have the option for viewing the created bill from the picking + itself.

+ +
+ +
+

+ Option to create customer invoice for delviery type picking

+

+ When the picking is of delivery type then we have the option to create the customer invoice.

+ +
+ +
+

+ Option to create vendor credit note for the return of incoming shipment

+

+ In the case of return of an incoming shipment we have the option to create the vendor credit note. +

+ +
+ + +
+

+ Option to create customer credit note for the return of outgoing shipment

+

+ In the case of return of an outgoing shipment we have the option to create the Customer credit note. +

+ +
+ + +
+ + +
+
+

Suggested Products

+
+ + +
+
+ + + +
+
+
+

Our Services

+
+
+ +
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+
+ + + +
+
+
+

Our Industries

+
+
+ +
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+ +
+
+ + + + + +
+
+
+

Need Help?

+
+
+
+ + +
+ +
+ +
+ +
+ WhatsApp +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/stock_move_invoice/views/account_move_inherited.xml b/stock_move_invoice/views/account_move_inherited.xml new file mode 100644 index 000000000..8eb74a27a --- /dev/null +++ b/stock_move_invoice/views/account_move_inherited.xml @@ -0,0 +1,15 @@ + + + + + account.move.form.view.inherited + account.move + + + + + + + + + \ No newline at end of file diff --git a/stock_move_invoice/views/res_config_settings_inherited.xml b/stock_move_invoice/views/res_config_settings_inherited.xml new file mode 100644 index 000000000..cf61956f4 --- /dev/null +++ b/stock_move_invoice/views/res_config_settings_inherited.xml @@ -0,0 +1,42 @@ + + + + res.config.settings.invoice.modification + res.config.settings + + + + +

Invoice From Stock Picking

+
+
+
+
+ Journals + +
+ Journals which should apply for the invoice creation from stock picking +
+
+
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/stock_move_invoice/views/stock_picking_inherited.xml b/stock_move_invoice/views/stock_picking_inherited.xml new file mode 100644 index 000000000..4c0a1708f --- /dev/null +++ b/stock_move_invoice/views/stock_picking_inherited.xml @@ -0,0 +1,37 @@ + + + + + stock.picking.form.view.inherited + stock.picking + + + + + + + + + + + + + + diff --git a/website_product_publish/views/product_category.xml b/website_product_publish/views/product_category.xml new file mode 100644 index 000000000..bd786390a --- /dev/null +++ b/website_product_publish/views/product_category.xml @@ -0,0 +1,27 @@ + + + + + product.category.form.inherit + product.category + + + + + + + + + + + + diff --git a/website_product_publish/views/product_template.xml b/website_product_publish/views/product_template.xml new file mode 100644 index 000000000..37bc63aeb --- /dev/null +++ b/website_product_publish/views/product_template.xml @@ -0,0 +1,17 @@ + + + + + product.template.product.website.forms.inherit + product.template + + + + quick_publish_button + + + + + + + diff --git a/website_product_publish/wizard/__init__.py b/website_product_publish/wizard/__init__.py new file mode 100644 index 000000000..e0ce0efd9 --- /dev/null +++ b/website_product_publish/wizard/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# 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 . +# +################################################################################### + +from . import website_product_publish + + diff --git a/website_product_publish/wizard/product_publish_view.xml b/website_product_publish/wizard/product_publish_view.xml new file mode 100644 index 000000000..a8f90f944 --- /dev/null +++ b/website_product_publish/wizard/product_publish_view.xml @@ -0,0 +1,33 @@ + + + + Publish/Unpublish Products + product.publish.wizard + +
+ + The selected products will be published/unpublished from website + +
+
+
+
+
+ + + +
+ + diff --git a/website_product_publish/wizard/website_product_publish.py b/website_product_publish/wizard/website_product_publish.py new file mode 100644 index 000000000..d6858617a --- /dev/null +++ b/website_product_publish/wizard/website_product_publish.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2020-TODAY Cybrosys Technologies (). +# 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 . +# +################################################################################### + +from odoo import models, api, fields, _ + + +class ProductPublishWizard(models.TransientModel): + _name = 'product.publish.wizard' + _description = "Product Publish/Unpublish" + + def product_multi_publish(self): + active_ids = self._context.get('active_ids') + products = self.env['product.template'].browse(active_ids) + products = products.filtered(lambda product: product.sale_ok == True) + for product in products: + product.is_published = True + + def product__multi_unpublish(self): + active_ids = self._context.get('active_ids') + products = self.env['product.template'].browse(active_ids) + products = products.filtered(lambda product: product.sale_ok == True) + for product in products: + product.is_published = False