Show authorization ranges for draft sequences
Publicar paquete PyPI / publish (push) Successful in 1m17s

This commit is contained in:
José Arturo García
2026-08-16 14:34:29 -04:00
parent 59d84bd8af
commit bb783e1c4e
6 changed files with 80 additions and 4 deletions
+16
View File
@@ -578,6 +578,22 @@ msgctxt "field:ncf.manager.sequence,effective_expiration_date:"
msgid "Expiration Date" msgid "Expiration Date"
msgstr "Fecha de vencimiento" msgstr "Fecha de vencimiento"
msgctxt "field:ncf.manager.sequence,tree_from_number:"
msgid "Authorized From"
msgstr "Desde autorizado"
msgctxt "field:ncf.manager.sequence,tree_until_number:"
msgid "Authorized Until"
msgstr "Hasta autorizado"
msgctxt "field:ncf.manager.sequence,tree_number_next:"
msgid "Next Number to Issue"
msgstr "Siguiente número por emitir"
msgctxt "field:ncf.manager.sequence,tree_expiration_date:"
msgid "Expiration Date"
msgstr "Fecha de vencimiento"
msgctxt "field:ncf.manager.sequence,availability:" msgctxt "field:ncf.manager.sequence,availability:"
msgid "Availability" msgid "Availability"
msgstr "Disponibilidad" msgstr "Disponibilidad"
+16
View File
@@ -1093,6 +1093,22 @@ msgctxt "field:ncf.manager.sequence,effective_expiration_date:"
msgid "Expiration Date" msgid "Expiration Date"
msgstr "Fecha de vencimiento" msgstr "Fecha de vencimiento"
msgctxt "field:ncf.manager.sequence,tree_from_number:"
msgid "Authorized From"
msgstr "Desde autorizado"
msgctxt "field:ncf.manager.sequence,tree_until_number:"
msgid "Authorized Until"
msgstr "Hasta autorizado"
msgctxt "field:ncf.manager.sequence,tree_number_next:"
msgid "Next Number to Issue"
msgstr "Siguiente número por emitir"
msgctxt "field:ncf.manager.sequence,tree_expiration_date:"
msgid "Expiration Date"
msgstr "Fecha de vencimiento"
msgctxt "field:ncf.manager.sequence,availability:" msgctxt "field:ncf.manager.sequence,availability:"
msgid "Availability" msgid "Availability"
msgstr "Disponibilidad" msgstr "Disponibilidad"
+16
View File
@@ -57,6 +57,22 @@ msgctxt "field:ncf.manager.sequence,effective_expiration_date:"
msgid "Expiration Date" msgid "Expiration Date"
msgstr "Fecha de vencimiento" msgstr "Fecha de vencimiento"
msgctxt "field:ncf.manager.sequence,tree_from_number:"
msgid "Authorized From"
msgstr "Desde autorizado"
msgctxt "field:ncf.manager.sequence,tree_until_number:"
msgid "Authorized Until"
msgstr "Hasta autorizado"
msgctxt "field:ncf.manager.sequence,tree_number_next:"
msgid "Next Number to Issue"
msgstr "Siguiente número por emitir"
msgctxt "field:ncf.manager.sequence,tree_expiration_date:"
msgid "Expiration Date"
msgstr "Fecha de vencimiento"
msgctxt "field:ncf.manager.sequence,availability:" msgctxt "field:ncf.manager.sequence,availability:"
msgid "Availability" msgid "Availability"
msgstr "Disponibilidad" msgstr "Disponibilidad"
+17
View File
@@ -363,6 +363,19 @@ class NCFManagerSequences(Workflow, ModelSQL, ModelView):
'invisible': Eval('sequence_mode') == 'create', 'invisible': Eval('sequence_mode') == 'create',
}), 'get_effective_sequence_values') }), 'get_effective_sequence_values')
# Tree-specific values must remain visible for both assisted draft lines
# and lines backed by an activated strict sequence. The effective fields
# above retain their form-only visibility rules.
tree_from_number = fields.Function(
fields.Integer('Authorized From'), 'get_effective_sequence_values')
tree_until_number = fields.Function(
fields.Integer('Authorized Until'), 'get_effective_sequence_values')
tree_number_next = fields.Function(
fields.Integer('Next Number to Issue'),
'get_effective_sequence_values')
tree_expiration_date = fields.Function(
fields.Date('Expiration Date'), 'get_effective_sequence_values')
invoice_type = fields.Selection([ invoice_type = fields.Selection([
('invoice_customer', 'Customer Invoice'), ('invoice_customer', 'Customer Invoice'),
('invoice_supplier', 'Supplier Invoice') ('invoice_supplier', 'Supplier Invoice')
@@ -437,6 +450,10 @@ class NCFManagerSequences(Workflow, ModelSQL, ModelView):
'effective_until_number': 'until_number', 'effective_until_number': 'until_number',
'effective_number_next': 'number_next', 'effective_number_next': 'number_next',
'effective_expiration_date': 'expiration_date', 'effective_expiration_date': 'expiration_date',
'tree_from_number': 'from_number',
'tree_until_number': 'until_number',
'tree_number_next': 'number_next',
'tree_expiration_date': 'expiration_date',
} }
for record in records: for record in records:
sequence = record.ncf_sequences sequence = record.ncf_sequences
+11
View File
@@ -278,6 +278,12 @@ class NcfManagerTestCase(ModuleTestCase):
self.assertEqual( self.assertEqual(
line.effective_expiration_date, line.effective_expiration_date,
datetime.date(today.year, 12, 31)) datetime.date(today.year, 12, 31))
self.assertEqual(line.tree_from_number, 100)
self.assertEqual(line.tree_until_number, 109)
self.assertEqual(line.tree_number_next, 100)
self.assertEqual(
line.tree_expiration_date,
datetime.date(today.year, 12, 31))
self.assertEqual(line.availability, 'low') self.assertEqual(line.availability, 'low')
Manager.finish([manager]) Manager.finish([manager])
@@ -305,6 +311,11 @@ class NcfManagerTestCase(ModuleTestCase):
self.assertEqual(line.from_number, 1) self.assertEqual(line.from_number, 1)
self.assertEqual(line.until_number, 100) self.assertEqual(line.until_number, 100)
self.assertEqual(line.expiration_date, datetime.date(2027, 12, 31)) self.assertEqual(line.expiration_date, datetime.date(2027, 12, 31))
self.assertEqual(line.tree_from_number, 1)
self.assertEqual(line.tree_until_number, 100)
self.assertEqual(line.tree_number_next, 1)
self.assertEqual(
line.tree_expiration_date, datetime.date(2027, 12, 31))
managers, lines = import_dgii_authorizations( managers, lines = import_dgii_authorizations(
company, data, 'authorization-again.xml') company, data, 'authorization-again.xml')
+4 -4
View File
@@ -7,10 +7,10 @@ this repository contains the full copyright notices and license terms. -->
<field name="ncf_type"/> <field name="ncf_type"/>
<field name="expected_prefix"/> <field name="expected_prefix"/>
<field name="ncf_sequences"/> <field name="ncf_sequences"/>
<field name="effective_from_number"/> <field name="tree_from_number"/>
<field name="effective_until_number"/> <field name="tree_until_number"/>
<field name="effective_number_next"/> <field name="tree_number_next"/>
<field name="effective_expiration_date"/> <field name="tree_expiration_date"/>
<field name="availability"/> <field name="availability"/>
<field name="state"/> <field name="state"/>
<button name="finish"/> <button name="finish"/>