@@ -127,7 +127,9 @@ def _prepare_ctx_from_model(self, model):
127
127
for fixed_key in list (fixed_fields .keys ()):
128
128
ctx_key = "default_%s" % fixed_key
129
129
fixed_value = fixed_fields [fixed_key ]
130
- ctx .update ({ctx_key : fixed_value .id })
130
+ if isinstance (fixed_value , models .Model ):
131
+ fixed_value = fixed_value .id
132
+ ctx .update ({ctx_key : fixed_value })
131
133
return ctx
132
134
133
135
def _get_fixed_fields_from_model (self , model ):
@@ -136,7 +138,7 @@ def _get_fixed_fields_from_model(self, model):
136
138
lambda x : x .model == model and x .value_type == "fixed"
137
139
)
138
140
for fixed_field in fixed_fields :
139
- res [fixed_field .field_name ] = fixed_field .fixed_value
141
+ res [fixed_field .field_name ] = fixed_field ._get_fixed_value ()
140
142
return res
141
143
142
144
def _get_field_header_values (self , text ):
@@ -275,6 +277,16 @@ class BaseImportPdfTemplateLine(models.Model):
275
277
default = "variable" ,
276
278
string = "Value type" ,
277
279
)
280
+ fixed_value_char = fields .Char ()
281
+ fixed_value_date = fields .Date ()
282
+ fixed_value_datetime = fields .Datetime ()
283
+ fixed_value_float = fields .Float ()
284
+ fixed_value_html = fields .Html ()
285
+ fixed_value_integer = fields .Integer ()
286
+ fixed_value_selection = fields .Many2one (
287
+ comodel_name = "ir.model.fields.selection" , domain = "[('field_id', '=', field_id)]"
288
+ )
289
+ fixed_value_text = fields .Text ()
278
290
fixed_value = fields .Reference (
279
291
selection = "_selection_reference_value" ,
280
292
string = "Fixed value" ,
@@ -313,6 +325,27 @@ def _compute_model(self):
313
325
else item .template_id .child_model
314
326
)
315
327
328
+ def _get_fixed_field_name_ttype_mapped (self ):
329
+ return {
330
+ "char" : "fixed_value_char" ,
331
+ "date" : "fixed_value_date" ,
332
+ "datetime" : "fixed_value_datetime" ,
333
+ "float" : "fixed_value_float" ,
334
+ "html" : "fixed_value_html" ,
335
+ "integer" : "fixed_value_integer" ,
336
+ "selection" : "fixed_value_selection" ,
337
+ "text" : "fixed_value_text" ,
338
+ "many2one" : "fixed_value" ,
339
+ }
340
+
341
+ def _get_fixed_value (self ):
342
+ self .ensure_one ()
343
+ f_name = self ._get_fixed_field_name_ttype_mapped ()[self .field_ttype ]
344
+ f_value = self [f_name ]
345
+ if self .field_ttype == "selection" :
346
+ f_value = f_value .value
347
+ return f_value
348
+
316
349
def _replace_text (self , text , letters , prefix ):
317
350
for letter in letters :
318
351
text = text .replace (letter , prefix + letter )
0 commit comments