-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
967dc12
commit ad8b6f6
Showing
19 changed files
with
406 additions
and
317 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,2 @@ | ||
# Copyright 2023 - TODAY, Kaynnan Lemes <[email protected]> | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). | ||
from . import models | ||
from . import wizard |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,4 @@ | ||
# Copyright 2023 - TODAY, Kaynnan Lemes <[email protected]> | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). | ||
from . import blanket_orders | ||
from . import sale_blanket_orders | ||
from . import egd_sale_blanket_order_product | ||
from . import egd_sale_blanket_order_service | ||
from . import sale_order_plan | ||
from . import egd_sale_blanket_order_sale_order_plan |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,14 @@ | ||
# Copyright 2023 - TODAY, Kaynnan Lemes <[email protected]> | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). | ||
|
||
from odoo import _, fields, models | ||
from odoo.exceptions import UserError, ValidationError | ||
from odoo.tools.float_utils import float_compare, float_round | ||
|
||
|
||
class SaleOrderPlan(models.Model): | ||
_name = "sale.order.plan" | ||
_description = "Order Planning Detail" | ||
class EgdSaleBlanketOrderSaleOrderPlan(models.Model): | ||
_name = "egd.sale.blanket.order.sale.order.plan" | ||
_description = "Sale Order Planning Detail" | ||
_order = "installment" | ||
|
||
sale_id = fields.Many2one( | ||
|
@@ -94,7 +97,7 @@ def _compute_ordered(self): | |
|
||
def _compute_last(self): | ||
for rec in self: | ||
last = max(rec.sale_id.order_plan_ids.mapped("installment")) | ||
last = max(rec.sale_id.egd_sale_order_plan_ids.mapped("installment")) | ||
rec.last = rec.installment == last | ||
|
||
def _compute_new_order_quantity(self, blanket_order): | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
# Copyright 2019 Ecosoft Co., Ltd (http://ecosoft.co.th/) | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html) | ||
# Copyright 2023 - TODAY, Kaynnan Lemes <[email protected]> | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). | ||
|
||
from dateutil.relativedelta import relativedelta | ||
|
||
from odoo import _, api, fields, models | ||
|
@@ -10,74 +11,76 @@ | |
class SaleBlanketOrder(models.Model): | ||
_inherit = "sale.blanket.order" | ||
|
||
order_plan_ids = fields.One2many( | ||
comodel_name="sale.order.plan", | ||
egd_sale_order_plan_ids = fields.One2many( | ||
comodel_name="egd.sale.blanket.order.sale.order.plan", | ||
inverse_name="sale_id", | ||
string="Order Plan", | ||
string="Sale Order Plan", | ||
copy=False, | ||
) | ||
use_order_plan = fields.Boolean( | ||
string="Use Order Plan", | ||
egd_use_sale_order_plan = fields.Boolean( | ||
string="Use Sale Order Plan", | ||
default=False, | ||
copy=False, | ||
) | ||
ip_order_plan = fields.Boolean( | ||
string="Order Plan In Process", | ||
compute="_compute_ip_order_plan", | ||
help="At least one order plan line pending to create order", | ||
egd_ip_sale_order_plan = fields.Boolean( | ||
string="Sale Order Plan In Process", | ||
compute="_compute_egd_ip_sale_order_plan", | ||
help="At least one order plan line pending to create sale order", | ||
) | ||
egd_order_product = fields.One2many( | ||
egd_order_product_ids = fields.One2many( | ||
"egd.sale.blanket.order.product", | ||
"blanket_order_id", | ||
string="Blanket Order Products", | ||
string="Blanket Order Products Costs", | ||
) | ||
|
||
egd_order_service = fields.One2many( | ||
egd_order_service_ids = fields.One2many( | ||
"egd.sale.blanket.order.service", | ||
"blanket_order_id", | ||
string="Blanket Order Services", | ||
string="Blanket Order Services Costs", | ||
) | ||
|
||
egd_product_total = fields.Monetary( | ||
"egd_order_product.amount_total", compute="_compute_egd_total_order_product" | ||
"Total Product Costs", compute="_compute_egd_product_total" | ||
) | ||
|
||
egd_service_total = fields.Monetary( | ||
"egd_order_service.amount_total", compute="_compute_egd_total_order_service" | ||
"Total Service Costs", compute="_compute_egd_service_total" | ||
) | ||
|
||
egd_profit = fields.Monetary( | ||
string="Profit", compute="_compute_egd_profit", store=True | ||
string="Profit (Total - Total Costs)", compute="_compute_egd_profit", store=True | ||
) | ||
|
||
def _compute_ip_order_plan(self): | ||
def _compute_egd_ip_sale_order_plan(self): | ||
for rec in self: | ||
has_order_plan = rec.use_order_plan and rec.order_plan_ids | ||
to_order = rec.order_plan_ids.filtered(lambda l: not l.ordered) | ||
has_order_plan = rec.egd_use_sale_order_plan and rec.egd_sale_order_plan_ids | ||
to_order = rec.egd_sale_order_plan_ids.filtered(lambda l: not l.ordered) | ||
if rec.state == "open" and has_order_plan and to_order: | ||
rec.ip_order_plan = True | ||
rec.egd_ip_sale_order_plan = True | ||
continue | ||
rec.ip_order_plan = False | ||
rec.egd_ip_sale_order_plan = False | ||
|
||
@api.constrains("state") | ||
def _check_order_plan(self): | ||
for rec in self: | ||
if rec.state != "draft": | ||
if rec.order_plan_ids.filtered(lambda l: not l.percent): | ||
if rec.egd_sale_order_plan_ids.filtered(lambda l: not l.percent): | ||
raise ValidationError( | ||
_("Please fill percentage for all order plan lines") | ||
) | ||
|
||
def action_confirm(self): | ||
if self.filtered(lambda r: r.use_order_plan and not r.order_plan_ids): | ||
if self.filtered( | ||
lambda r: r.egd_use_sale_order_plan and not r.egd_sale_order_plan_ids | ||
): | ||
raise UserError(_("Use Order Plan selected, but no plan created")) | ||
return super().action_confirm() | ||
|
||
def create_order_plan( | ||
self, num_installment, installment_date, interval, interval_type | ||
): | ||
self.ensure_one() | ||
self.order_plan_ids.unlink() | ||
self.egd_sale_order_plan_ids.unlink() | ||
order_plans = [] | ||
Decimal = self.env["decimal.precision"] | ||
prec = Decimal.precision_get("Product Unit of Measure") | ||
|
@@ -98,12 +101,12 @@ def create_order_plan( | |
installment_date = self._next_date( | ||
installment_date, interval, interval_type | ||
) | ||
self.write({"order_plan_ids": order_plans}) | ||
self.write({"egd_sale_order_plan_ids": order_plans}) | ||
return True | ||
|
||
def remove_order_plan(self): | ||
self.ensure_one() | ||
self.order_plan_ids.unlink() | ||
self.egd_sale_order_plan_ids.unlink() | ||
return True | ||
|
||
@api.model | ||
|
@@ -153,38 +156,32 @@ def _create_sale_order(self): | |
self.id | ||
) # Usage for compute new quantity | ||
if order_plan_id: | ||
plan = self.env["sale.order.plan"].browse(order_plan_id) | ||
plan = self.env["egd.sale.blanket.order.sale.order.plan"].browse( | ||
order_plan_id | ||
) | ||
for order in orders: | ||
plan._compute_new_order_quantity(blanket_orders) | ||
order.date_order = plan.plan_date | ||
plan.sale_order_ids += orders | ||
return orders | ||
|
||
@api.depends("egd_order_product.amount_total", "egd_order_service.amount_total") | ||
@api.depends("amount_total", "egd_service_total", "egd_product_total") | ||
def _compute_egd_profit(self): | ||
for order in self: | ||
order.egd_profit = sum( | ||
[line.amount_total for line in order.egd_order_product] | ||
) + sum([line.amount_total for line in order.egd_order_service]) | ||
|
||
def _compute_egd_total_order_product(self): | ||
for order in self: | ||
order.egd_product_total = sum( | ||
[line.amount_total for line in order.egd_order_product] | ||
order.egd_profit = order.amount_total - ( | ||
order.egd_product_total + order.egd_service_total | ||
) | ||
|
||
def _compute_egd_total_order_service(self): | ||
@api.depends("egd_order_product_ids.amount_total") | ||
def _compute_egd_product_total(self): | ||
for order in self: | ||
order.egd_service_total = sum( | ||
[line.amount_total for line in order.egd_order_service] | ||
order.egd_product_total = sum( | ||
[line.amount_total for line in order.egd_order_product_ids] | ||
) | ||
|
||
@api.onchange("egd_order_product", "egd_order_service") | ||
def _onchange_egd_order_product_service(self): | ||
@api.depends("egd_order_service_ids.amount_total") | ||
def _compute_egd_service_total(self): | ||
for order in self: | ||
order.egd_service_total = sum( | ||
[line.amount_total for line in order.egd_order_service] | ||
) | ||
order.egd_product_total = sum( | ||
[line.amount_total for line in order.egd_order_product] | ||
[line.amount_total for line in order.egd_order_service_ids] | ||
) |
23 changes: 23 additions & 0 deletions
23
egd_sale_blanket_order_custom/security/egd_sale_blanket_order_product.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<!-- Copyright 2020 - TODAY, Marcel Savegnago - Escodoo https://www.escodoo.com.br | ||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). --> | ||
<odoo> | ||
<record model="ir.model.access" id="egd_sale_blanket_order__user"> | ||
<field name="name">egd_sale_blanket_order_product_user</field> | ||
<field name="model_id" ref="model_egd_sale_blanket_order_product" /> | ||
<field name="group_id" ref="base.group_user" /> | ||
<field name="perm_read" eval="1" /> | ||
<field name="perm_create" eval="0" /> | ||
<field name="perm_write" eval="0" /> | ||
<field name="perm_unlink" eval="0" /> | ||
</record> | ||
<record model="ir.model.access" id="egd_sale_blanket_order_product_manager"> | ||
<field name="name">egd_sale_blanket_order_product_manager</field> | ||
<field name="model_id" ref="model_egd_sale_blanket_order_product" /> | ||
<field name="group_id" ref="sales_team.group_sale_salesman" /> | ||
<field name="perm_read" eval="1" /> | ||
<field name="perm_create" eval="1" /> | ||
<field name="perm_write" eval="1" /> | ||
<field name="perm_unlink" eval="1" /> | ||
</record> | ||
</odoo> |
23 changes: 23 additions & 0 deletions
23
egd_sale_blanket_order_custom/security/egd_sale_blanket_order_sale_order_plan.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<!-- Copyright 2020 - TODAY, Marcel Savegnago - Escodoo https://www.escodoo.com.br | ||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). --> | ||
<odoo> | ||
<record model="ir.model.access" id="egd_sale_blanket_order_sale_order_plan_user"> | ||
<field name="name">egd_sale_blanket_order_sale_order_plan_user</field> | ||
<field name="model_id" ref="model_egd_sale_blanket_order_sale_order_plan" /> | ||
<field name="group_id" ref="base.group_user" /> | ||
<field name="perm_read" eval="1" /> | ||
<field name="perm_create" eval="0" /> | ||
<field name="perm_write" eval="0" /> | ||
<field name="perm_unlink" eval="0" /> | ||
</record> | ||
<record model="ir.model.access" id="egd_sale_blanket_order_sale_order_plan_manager"> | ||
<field name="name">egd_sale_blanket_order_sale_order_plan_manager</field> | ||
<field name="model_id" ref="model_egd_sale_blanket_order_sale_order_plan" /> | ||
<field name="group_id" ref="sales_team.group_sale_salesman" /> | ||
<field name="perm_read" eval="1" /> | ||
<field name="perm_create" eval="1" /> | ||
<field name="perm_write" eval="1" /> | ||
<field name="perm_unlink" eval="1" /> | ||
</record> | ||
</odoo> |
23 changes: 23 additions & 0 deletions
23
egd_sale_blanket_order_custom/security/egd_sale_blanket_order_service.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<!-- Copyright 2020 - TODAY, Marcel Savegnago - Escodoo https://www.escodoo.com.br | ||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). --> | ||
<odoo> | ||
<record model="ir.model.access" id="egd_sale_blanket_order_service_user"> | ||
<field name="name">egd_sale_blanket_order_service_user</field> | ||
<field name="model_id" ref="model_egd_sale_blanket_order_service" /> | ||
<field name="group_id" ref="base.group_user" /> | ||
<field name="perm_read" eval="1" /> | ||
<field name="perm_create" eval="0" /> | ||
<field name="perm_write" eval="0" /> | ||
<field name="perm_unlink" eval="0" /> | ||
</record> | ||
<record model="ir.model.access" id="egd_sale_blanket_order_service_manager"> | ||
<field name="name">egd_sale_blanket_order_service_manager</field> | ||
<field name="model_id" ref="model_egd_sale_blanket_order_service" /> | ||
<field name="group_id" ref="sales_team.group_sale_salesman" /> | ||
<field name="perm_read" eval="1" /> | ||
<field name="perm_create" eval="1" /> | ||
<field name="perm_write" eval="1" /> | ||
<field name="perm_unlink" eval="1" /> | ||
</record> | ||
</odoo> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,3 @@ | ||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink | ||
access_sale_order_plan,access_sale_order_plan,model_sale_order_plan,,1,1,1,1 | ||
access_egd_sale_blanket_order_product,access_egd_sale_blanket_order_product,model_egd_sale_blanket_order_product,,1,1,1,1 | ||
access_egd_sale_blanket_order_service,access_egd_sale_blanket_order_service,model_egd_sale_blanket_order_service,,1,1,1,1 | ||
access_sale_create_order_plan,access_sale_create_order_plan,model_sale_create_order_plan,,1,1,1,1 | ||
access_sale_make_planned_order,access_sale_make_planned_order,model_sale_make_planned_order,,1,1,1,1 |
Oops, something went wrong.