Skip to content

Commit abb0261

Browse files
committed
[IMP] shopinvader_api_delivery_carrier: Add deliveries lines and state
1 parent 9236941 commit abb0261

File tree

4 files changed

+78
-0
lines changed

4 files changed

+78
-0
lines changed

shopinvader_api_delivery_carrier/__manifest__.py

+2
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,7 @@
5656
"security/acl_product_product.xml",
5757
"security/acl_stock_picking.xml",
5858
"security/acl_stock_picking_type.xml",
59+
"security/acl_stock_move.xml",
60+
"security/acl_stock_move_line.xml",
5961
],
6062
}

shopinvader_api_delivery_carrier/schemas/picking.py

+32
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
from pydantic import Field
1010

1111
from odoo import api
12+
from odoo.tools.float_utils import json_float_round
1213

1314
from ..schemas import DeliveryCarrier
1415

16+
1517
class PickingState(str, Enum):
1618
"""Enum for picking states."""
1719

@@ -63,16 +65,44 @@ def to_odoo_domain(self, env: api.Environment):
6365
domain.append(("sale_id", "=", self.sale_id))
6466
return domain
6567

68+
69+
class PickingLine(StrictExtendableBaseModel):
70+
product_id: int
71+
product_name: str
72+
state: str
73+
qty: float
74+
qty_done: float
75+
76+
@classmethod
77+
def from_picking_line(cls, odoo_rec):
78+
return cls.model_construct(
79+
product_id=odoo_rec.product_id.id,
80+
product_name=odoo_rec.product_id.name,
81+
state=odoo_rec.state,
82+
qty=json_float_round(
83+
odoo_rec.product_uom_qty,
84+
precision_digits=len(str(odoo_rec.product_uom.rounding).split(".")[1]),
85+
),
86+
qty_done=json_float_round(
87+
odoo_rec.quantity_done,
88+
precision_digits=len(str(odoo_rec.product_uom.rounding).split(".")[1]),
89+
),
90+
)
91+
92+
6693
class Picking(StrictExtendableBaseModel):
6794
delivery_id: int
6895
name: str
96+
state: PickingState
6997
tracking_reference: str | None = None
7098
delivery_date: datetime | None = Field(
7199
None, description="Date done or Scheduled Date"
72100
)
73101
carrier: DeliveryCarrier | None = None
74102
sale_id: int | None = None
75103

104+
lines: list[PickingLine]
105+
76106
@classmethod
77107
def from_picking(cls, odoo_rec):
78108
delivery_date = None
@@ -83,10 +113,12 @@ def from_picking(cls, odoo_rec):
83113
return cls.model_construct(
84114
delivery_id=odoo_rec.id,
85115
name=odoo_rec.name,
116+
state=odoo_rec.state,
86117
tracking_reference=odoo_rec.carrier_tracking_ref or None,
87118
delivery_date=delivery_date,
88119
carrier=DeliveryCarrier.from_delivery_carrier(odoo_rec.carrier_id)
89120
if odoo_rec.carrier_id
90121
else None,
91122
sale_id=odoo_rec.sale_id.id or None,
123+
lines=[PickingLine.from_picking_line(line) for line in odoo_rec.move_lines],
92124
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
Copyright 2025 Akretion (http://www.akretion.com).
4+
@author Florian Mounier <[email protected]>
5+
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
6+
-->
7+
<odoo>
8+
9+
<record model="ir.model.access" id="shopinvader_stock_move_access_view">
10+
<field name="name">stock.move shopinvader delivery user read access</field>
11+
<field name="model_id" ref="stock.model_stock_move" />
12+
<field
13+
name="group_id"
14+
ref="shopinvader_api_delivery_carrier.shopinvader_delivery_carrier_user_group"
15+
/>
16+
<field name="perm_read" eval="1" />
17+
<field name="perm_create" eval="0" />
18+
<field name="perm_unlink" eval="0" />
19+
<field name="perm_write" eval="0" />
20+
</record>
21+
22+
</odoo>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
Copyright 2025 Akretion (http://www.akretion.com).
4+
@author Florian Mounier <[email protected]>
5+
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
6+
-->
7+
<odoo>
8+
9+
<record model="ir.model.access" id="shopinvader_stock_move_line_access_view">
10+
<field name="name">stock.move.line shopinvader delivery user read access</field>
11+
<field name="model_id" ref="stock.model_stock_move_line" />
12+
<field
13+
name="group_id"
14+
ref="shopinvader_api_delivery_carrier.shopinvader_delivery_carrier_user_group"
15+
/>
16+
<field name="perm_read" eval="1" />
17+
<field name="perm_create" eval="0" />
18+
<field name="perm_unlink" eval="0" />
19+
<field name="perm_write" eval="0" />
20+
</record>
21+
22+
</odoo>

0 commit comments

Comments
 (0)