Skip to content

Commit 3f6f2f9

Browse files
committed
[IMP] stock_ux: better ux for delivery guide report
1 parent e79d51f commit 3f6f2f9

7 files changed

Lines changed: 102 additions & 8 deletions

File tree

l10n_ar_stock_delivery/README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Features
2020
========
2121

2222
#. **Enhanced Delivery Slip Reports**: Adds delivery-specific information to delivery documents including:
23-
23+
2424
* Package weight and weight unit of measure
2525
* Carrier tracking reference numbers
2626
* Detailed carrier information (name, VAT number, and address)
@@ -51,7 +51,7 @@ Usage
5151
To use this module:
5252

5353
#. **Enhanced Delivery Reports**: When printing delivery slips, the reports will automatically include:
54-
54+
5555
* Weight information if configured on the picking
5656
* Tracking references from the carrier
5757
* Complete carrier details including identification documents

l10n_ar_stock_ux/demo/stock_picking_demo.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@
77
<field name="company_id" ref="base.company_ri"/>
88
</record>
99

10+
<function model="stock.picking.type" name="write">
11+
<value model="stock.picking.type" eval="obj().search([('code', '=', 'outgoing'), ('company_id', '=', obj().env.ref('base.company_ri').id)], limit=1).id"/>
12+
<value eval="{
13+
'l10n_ar_sequence_number_start': '00000001',
14+
'l10n_ar_sequence_number_end': '00000999',
15+
'l10n_ar_document_type_id': ref('l10n_ar.dc_r_r'),
16+
'l10n_ar_cai_authorization_code': '1234567890',
17+
'l10n_ar_cai_expiration_date': '2099-01-01'}"/>
18+
</function>
19+
1020
<record id="l10n_ar_stock_ux_demo_1" model="stock.picking" context="{'allowed_company_ids': [ref('base.company_ri')], 'restricted_picking_type_code': 'outgoing'}">
1121
<!-- <field name="picking_type_id" model="stock.picking.type" search="[('code', '=', 'outgoing'), ('company_id', '=', obj().env.ref('base.company_ri').id)]"/> -->
1222
<field name="origin">outgoing shipment</field>

l10n_ar_stock_ux/models/stock_picking.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import datetime
22
import re
33

4-
from odoo import fields, models
4+
from odoo import api, fields, models
55

66
try:
77
from pyafipws.iibb import IIBB
@@ -43,6 +43,28 @@ class StockPicking(models.Model):
4343
compute="_compute_l10n_ar_afip_barcode",
4444
string="AFIP Barcode",
4545
)
46+
l10n_ar_delivery_guide_number = fields.Char(
47+
# lo hacemos editable para facturas de proveedor y tmb para que este disponible en acciones masivas, importaciones y demás
48+
readonly=False,
49+
help='Número o lista de números de remitos separadas por ",". Por ejempplo:\n'
50+
"* 0001-00000001\n"
51+
"* 0001-00000001,0001-00000002",
52+
)
53+
54+
@api.onchange("l10n_ar_delivery_guide_number")
55+
def _format_document_number(self):
56+
if self.l10n_ar_delivery_guide_number:
57+
if "," in self.l10n_ar_delivery_guide_number:
58+
docs = self.l10n_ar_delivery_guide_number.split(",")
59+
else:
60+
docs = [self.l10n_ar_delivery_guide_number]
61+
l10n_ar_delivery_guide_numbers = []
62+
for doc in docs:
63+
l10n_ar_delivery_guide_numbers.append(self.env.ref("l10n_ar.dc_r_r")._format_document_number(doc))
64+
self.l10n_ar_delivery_guide_number = ",".join(l10n_ar_delivery_guide_numbers)
65+
# # if
66+
# self.l10n_ar_delivery_guide_number = self.env.ref('l10n_ar.dc_r_r')._format_document_number(
67+
# self.l10n_ar_delivery_guide_number)
4668

4769
def _get_name_delivery_report(self, report_xml_id):
4870
"""Method similar to the '_get_name_invoice_report' of l10n_latam_invoice_document
@@ -451,6 +473,12 @@ def do_pyafipws_presentar_remito(
451473
return True
452474

453475
def _action_done(self):
476+
# asignamos nro antes de validar para que el reporte que salga al enviar por correo (_send_confirmation_email)
477+
# sea con look y nro argentino
478+
# TODO revisar si alguien lo usa y sacar este contexto
479+
if not self._context.get("do_not_assign_numbers", False):
480+
for picking in self.filtered("picking_type_id.auto_assign_delivery_guide"):
481+
picking.l10n_ar_action_create_delivery_guide()
454482
res = super()._action_done()
455483
for rec in self.filtered(lambda x: x.picking_type_code == "incoming" and x.dispatch_number):
456484
rec.move_line_ids.filtered(lambda l: l.lot_id and not l.lot_id.dispatch_number).mapped("lot_id").write(

l10n_ar_stock_ux/models/stock_picking_type.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class StockPickingType(models.Model):
@@ -18,3 +18,18 @@ class StockPickingType(models.Model):
1818
help="Agregar al reporte una sección para añadir firma de confirmación de recepción.",
1919
default=False,
2020
)
21+
auto_assign_delivery_guide = fields.Boolean(
22+
string="Auto Assign Delivery Guide Number",
23+
help="Al validar una transferencia de este tipo, se asignará automáticamente un número de remito.",
24+
default=False,
25+
)
26+
27+
@api.onchange("l10n_ar_sequence_number_start")
28+
def _add_padding_to_sequence_number_start(self):
29+
if self.l10n_ar_sequence_number_start:
30+
self.l10n_ar_sequence_number_start = self.l10n_ar_sequence_number_start.zfill(8)
31+
32+
@api.onchange("l10n_ar_sequence_number_end")
33+
def _add_padding_to_sequence_number_end(self):
34+
if self.l10n_ar_sequence_number_end:
35+
self.l10n_ar_sequence_number_end = self.l10n_ar_sequence_number_end.zfill(8)

l10n_ar_stock_ux/views/report_deliveryslip.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<odoo>
33

4+
<!-- odoo incorporó su propio reporte para argentina pero nosotros preferimos mantener approach de 18- por lo siguiente:
5+
a) mismo reporte se comporta como argentino o no según distintos casos, no es un reporte separado
6+
b) tiene un mejor look
7+
c) tiene integración con otros módulos nuestros (y campos custom)
8+
al reporte de odoo le sacamos binding para que no aparezca -->
9+
<record id="l10n_ar_stock.action_delivery_guide_report_pdf" model="ir.actions.report">
10+
<field name="binding_model_id" eval="False"/>
11+
</record>
12+
413
<template id="report_deliveryslip" inherit_id="stock.report_deliveryslip">
514
<t t-foreach="docs" position="replace">
615
<t t-foreach="l10n_ar_copies_list" t-as="copy_type">

l10n_ar_stock_ux/views/stock_picking_type_views.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
<field name="model">stock.picking.type</field>
55
<field name="inherit_id" ref="stock.view_picking_type_form"/>
66
<field name="arch" type="xml">
7-
<field name="sequence_code" position="after">
8-
<field name="report_partner_id"/>
9-
<field name="report_signature_section"/>
7+
<field name="l10n_ar_sequence_number_end" position="after">
8+
<field name="auto_assign_delivery_guide" invisible="not l10n_ar_document_type_id"/>
9+
<field name="report_partner_id" invisible="not l10n_ar_document_type_id"/>
10+
<field name="report_signature_section" invisible="not l10n_ar_document_type_id"/>
1011
</field>
1112
</field>
1213
</record>

l10n_ar_stock_ux/views/stock_picking_views.xml

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,41 @@
11
<odoo>
2+
<record id="view_picking_internal_search" model="ir.ui.view">
3+
<field name="name">stock.picking.internal.search</field>
4+
<field name="model">stock.picking</field>
5+
<field name="inherit_id" ref="stock.view_picking_internal_search"/>
6+
<field name="arch" type="xml">
7+
<!-- no heredamos el filter_domain de "name" porque si no cada localización estaría parcheando con su propio nro.
8+
a la larga odoo debería tener algo más genérico tipo "doc_number" y que todas las localizaciones lo re-utilicen -->
9+
<field name="name" position="after">
10+
<field name="l10n_ar_delivery_guide_number"/>
11+
</field>
12+
</field>
13+
</record>
14+
15+
<record id="vpicktree" model="ir.ui.view">
16+
<field name="name">stock.picking.tree</field>
17+
<field name="model">stock.picking</field>
18+
<field name="inherit_id" ref="stock.vpicktree"/>
19+
<field name="arch" type="xml">
20+
<field name="name" position="after">
21+
<field name="l10n_ar_delivery_guide_number" optional="hide"/>
22+
</field>
23+
</field>
24+
</record>
225

326
<record id="view_picking_cot_form" model="ir.ui.view">
427
<field name="name">stock.picking.form.inherit</field>
528
<field name="model">stock.picking</field>
6-
<field name="inherit_id" ref="stock.view_picking_form"/>
29+
<field name="inherit_id" ref="l10n_ar_stock.stock_picking_form_inherit_l10n_ar_stock"/>
730
<field name="arch" type="xml">
31+
<field name="l10n_ar_delivery_guide_number" position="attributes">
32+
<attribute name="readonly">False</attribute>
33+
</field>
34+
35+
<!-- por ahora ocultamos este boton de enviar por email. es una funcionalidad que no teníamos y no se pedía y además el método de odoo está bastante hardcodeado y parece feo. Por ahora creemos que va a doler menos ocultarlo. Si hay necesidad de tener botones para enviar por email podría ser feature de stock_us -->
36+
<button name="l10n_ar_action_send_delivery_guide" position="attributes">
37+
<attribute name="invisible">True</attribute>
38+
</button>
839
<button name="do_print_picking" position="after">
940
<button name="%(action_arba_cot_wizard)d" string="Obtener COT (BETA)"
1041
help="Obtener Código de Operaciones de Traslado (ARBA / Santa Fe)"

0 commit comments

Comments
 (0)