Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ADD] business_requirement_sale: New module in 11.0 #312

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions business_requirement_sale/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
=========================
Business Requirement Sale
=========================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png
:target: https://odoo-community.org/page/development-status
:alt: Alpha
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbusiness--requirement-lightgray.png?logo=github
:target: https://github.com/OCA/business-requirement/tree/11.0/business_requirement_sale
:alt: OCA/business-requirement
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/business-requirement-11-0/business-requirement-11-0-business_requirement_sale
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/222/11.0
:alt: Try me on Runbot

|badge1| |badge2| |badge3| |badge4| |badge5|

This module extends the functionality of Business Requirement
and to allow you to convert into new Sale Orders.
Deliverables if selected will be Order Lines on the new Order created.

**Table of contents**

.. contents::
:local:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/business-requirement/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/business-requirement/issues/new?body=module:%20business_requirement_sale%0Aversion:%2011.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* Tecnativa

Contributors
~~~~~~~~~~~~

* `Tecnativa <https://www.tecnativa.com>`_:

* Alexandre Diaz
* Pedro M. Baeza
* Victor M.M. Torres

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/business-requirement <https://github.com/OCA/business-requirement/tree/11.0/business_requirement_sale>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
5 changes: 5 additions & 0 deletions business_requirement_sale/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright 2019 Tecnativa Victor M.M. Torres>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import models
from . import wizard
26 changes: 26 additions & 0 deletions business_requirement_sale/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2019 Tecnativa Victor M.M. Torres>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Business Requirement Sale",
'category': 'Business Requirements Management',
'summary': 'Convert Business Requirement into \
Sale Orders',
"version": "11.0.1.0.0",
"development_status": "Alpha",
"website": "https://github.com/OCA/business-requirement",
"author": "Tecnativa, "
"Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": [
"business_requirement_deliverable",
"sale_management",
],
"data": [
'security/ir.model.access.csv',
'wizard/convert_requirement_sale.xml',
'views/sale_order_views.xml',
'views/business_requirement_views.xml',
],
}
5 changes: 5 additions & 0 deletions business_requirement_sale/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright 2019 Tecnativa Victor M.M. Torres>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import business
from . import sale_order
104 changes: 104 additions & 0 deletions business_requirement_sale/models/business.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# Copyright 2019 Tecnativa Victor M.M. Torres>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, fields, models, _
from odoo.tools.misc import formatLang


class BusinessRequirement(models.Model):
_inherit = 'business.requirement'

sale_order_ids = fields.One2many(
comodel_name='sale.order',
inverse_name='business_requirement_id',
string='Orders',
)
order_count = fields.Integer(
string='Count',
compute='_compute_order_count',
)
detailed_order = fields.Boolean(
help='Check this if need generated a detailed order'
)

@api.multi
@api.depends('sale_order_ids')
def _compute_order_count(self):
aux_count = 0
fetch_data = self.env['sale.order'].read_group(
domain=[('business_requirement_id', 'in', self.ids)],
fields=['business_requirement_id'],
groupby=['business_requirement_id'],
)
if fetch_data:
aux_count = fetch_data[0].get(
'business_requirement_id_count', 0)
for rec in self:
rec.order_count = aux_count

@api.multi
def convert_requirement_sale(self):
pedrobaeza marked this conversation as resolved.
Show resolved Hide resolved
vals = {
'br_id': self.id,
'brd_ids': [(6, 0, self.deliverable_lines.ids)]
}
wizard_obj = self.env['business.convert.requirement.sale']
wizard = wizard_obj.create(vals)
action = wizard.wizard_view()
return action

@api.multi
def launch_convert_wizard(self):
pedrobaeza marked this conversation as resolved.
Show resolved Hide resolved
vals = {
'br_id': self.id,
'brd_ids': [(6, 0, self.deliverable_lines.ids)],
}
wizard_obj = self.env['business.convert.requirement.sale']
wizard = wizard_obj.create(vals)
action = wizard.wizard_view()
return action

@api.multi
def open_orders(self):
for self in self:
pedrobaeza marked this conversation as resolved.
Show resolved Hide resolved
domain = [('business_requirement_id', '=', self.id)]
pedrobaeza marked this conversation as resolved.
Show resolved Hide resolved
br_id = 0
if self.state in ('draft', 'confirmed'):
br_id = self.id
pedrobaeza marked this conversation as resolved.
Show resolved Hide resolved
return {
'name': _('Sale Orders'),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'tree,form,graph',
'res_model': 'sale.order',
'target': 'current',
'domain': domain,
'context': {
'tree_view_ref': 'sale_order.' +
'view_sale_order_tree',
'form_view_ref': 'sale_order.' +
'view_sale_order_form',
'default_sale_order_id': br_id
}}


class BusinessRequirementDeliverable(models.Model):
_inherit = 'business.requirement.deliverable'

sale_order_line_id = fields.Many2one(
comodel_name='sale.order.line',
string='Order Line',
track_visibility='onchange',)

@api.multi
def name_get(self):
result = []
for rec in self:
name = rec.name
name = '{} - {} '.format(rec.sequence, rec.name,)
name += ' - (' + formatLang(
self.env, rec.price_total,
currency_obj=rec.currency_id)
name += ')'
result.append((rec.id, name))
return result
39 changes: 39 additions & 0 deletions business_requirement_sale/models/sale_order.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Copyright 2019 Tecnativa Victor M.M. Torres>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import api, fields, models


class SaleOrder(models.Model):
_inherit = 'sale.order'

business_requirement_id = fields.Many2one(
comodel_name='business.requirement',
string='Business requirement',
)


class SaleOrderLineSection(models.Model):
_name = 'sale.order.line.section'
_description = 'Sale Order Line Section'

name = fields.Char('Name', required=True)


class SaleOrderLine(models.Model):
_inherit = 'sale.order.line'

line_section_id = fields.Many2one(
comodel_name='sale.order.line.section',
string='Section')
business_requirement_deliverable_id = fields.Many2one(
comodel_name='business.requirement.deliverable',
string='Deliverable')

@api.multi
def _totaled_method(self):
for rec in self:
rec.write({
'product_uom_qty': 1,
'price_unit': rec.price_total,
})
5 changes: 5 additions & 0 deletions business_requirement_sale/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
* `Tecnativa <https://www.tecnativa.com>`_:

* Alexandre Diaz
* Pedro M. Baeza
* Victor M.M. Torres
3 changes: 3 additions & 0 deletions business_requirement_sale/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This module extends the functionality of Business Requirement
and to allow you to convert into new Sale Orders.
Deliverables if selected will be Order Lines on the new Order created.
3 changes: 3 additions & 0 deletions business_requirement_sale/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sale_order_line_section_user,business.requirement.deliverable.section.user,model_sale_order_line_section,business_requirement.group_business_requirement_user,1,0,0,0
access_sale_order_line_section_manager,business.requirement.deliverable.section.manager,model_sale_order_line_section,business_requirement.group_business_requirement_manager,1,1,1,1
Loading