Funciones
Documentación Funcional
Este módulo contiene funciones para manipular datos de documentos y realizar diversas operaciones relacionadas con los campos del documento.
Funciones
set_field_value()
Establece el valor de un campo en los datos del documento.
po_number = get_field_value(fields_dict, 'purchase_order', None)
if not po_number:
po_number = ''
if po_number:
set_field_value(fields_dict, "invoice_sub_type", 'Purchase Invoice')
else:
set_field_value(fields_dict, "invoice_sub_type", 'Cost Invoice')
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a establecer
value*
any
El valor a establecer para el campo
remove_link (opcional)
bool
Eliminar la clave "coords" del campo.
set_date_value()
Establece el valor de un campo de fecha en los datos del documento.
invoice_date = get_field_value(document_data, 'invoice_date', None)
if not document_json.get("script_executed", False):
if invoice_date:
set_date_value(document_data, "accounting_date", invoice_date)
document_json["script_executed"] = True
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a establecer
value*
string
El valor de fecha a establecer en formato ISO (por ejemplo, "2020-12-31").
add_days (opcional)
int
Agregar días adicionales a la fecha dada El valor predeterminado es 0
skip_weekend (opcional)
bool
Omitir la fecha si cae en fin de semana
El valor predeterminado es False
remove link (opcional)
bool
Eliminar la clave "coords" del campo.
exclude_final_days (opcional)
ya sea string
o int
Especifica los días a excluir (0-6 o domingo a sábado)
set_amount_value()
Establece el valor de un campo de cantidad en los datos del documento.
total_amount = get_field_value(document_data, "net_amount")
lines_total = 0.0
set_amount_value(document_data, "net_amount",str(lines_total))
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a establecer
value*
string
El valor a establecer para el campo (pase un número como cadena, por ejemplo, "123456")
remove link (opcional)
bool
Eliminar la clave "coords" del campo.
get_field_value()
Obtiene el valor de un campo de los datos del documento.
total_amount = get_field_value(document_data, "net_amount")
lines_total = 0.0
set_amount_value(document_data, "net_amount", str(lines_total))
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a establecer
default_value (opcional)
any
Devuelve default_value si no se encuentra valor de campo
El valor predeterminado es None
is_clean (opcional)
bool
Convierte el valor a mayúsculas y elimina espacios adicionales
El valor predeterminado es False
Devuelve:
Valor del campo especificado
create_new_field()
Crea un nuevo campo con el nombre y valor especificados.
currency = get_field_value(document_data, 'currency', None)
if not currency:
if 'currency' not in fields_dict:
new_field = create_new_field('currency','')
fields_dict['currency'] = new_field
document_json['fields'].append(new_field)
set_field_value(document_data, "currency", "USD")
Parámetros:
field_name*
str
Los datos del documento que contienen información del campo
value (opcional)
any
El valor inicial para el campo
El valor predeterminado es ""
Devuelve:
Diccionario del nuevo campo creado
delete_field()
Elimina un campo de los datos del documento.
field_amount = get_field_value(document_data, field_name)
if not field_amount:
delete_field(document_data, fields_dict, field_name)
else:
field_amount = float(field_amount)
if field_amount == 0:
delete_field(document_data, fields_dict, field_name)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a eliminar
Devuelve:
Document_data como json y como dict después de que se eliminó el campo
set_is_required()
Establece el atributo 'is_required' de un campo en los datos del documento.
net_amount = get_field_value(document_data, "net_amount", None)
if net_amount:
set_is_required(document_data, "tax_country", True)
set_is_required(document_data, "tax_code_without_country", True)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a establecer
value*
bool
El valor a establecer para el campo
set_force_validation()
Establece el atributo 'force_validation' de un campo en los datos del documento.
if supplier_id in supplier_to_check:
set_force_validation(document_data, 'purchase_order', True, reset_validation=reset_validation)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a establecer
value*
bool
El valor a establecer para el campo
reset_validation (opcional)
bool
Establece el atributo "is_validated" al valor especificado
El valor predeterminado es False
set_field_as_invalid()
Marca un campo en la pantalla de validación como inválido y lo resalta.
if not document_date:
set_field_as_invalid(document_data, "document_date", "Es ist kein Datum vorhanden", "INVALID_VALUE")
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a marcar como inválido
message*
string
El mensaje de validación para el campo
code (opcional)
string
Código de error para la validación
El valor predeterminado es None
set_field_attribute()
Establece un atributo personalizado de un campo en los datos del documento.
if purchase_order:
if po_supplier_id != invoice_supplier_id:
set_field_as_invalid(document_data, "supplier_name", "Supplier is different from PO supplier")
else:
set_field_attribute(document_data, "supplier_name", "is_valid", True)
set_field_attribute(document_data, "supplier_name", "validation_message","")
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
field_name*
string
El nombre del campo a establecer
attribute_name*
string
El nombre del atributo a establecer
value*
any
El valor a establecer para el atributo
is_supplier_valid()
Verifica si un proveedor es válido según los criterios proporcionados.
bool = is_supplier_valid(user, {"name": "Supplier Inc."})
Parámetros:
user*
UserAuthentication
El usuario autenticado
filter_data_json*
json
Criterios de filtrado para validar el proveedor
sub_org_id (opcional)
string
ID de suborganización opcional para filtrado
El valor predeterminado es None
Devuelve:
True, si el usuario es válido
False si el usuario no es válido
get_document_content()
Decodifica los datos del documento y los devuelve como una cadena.
document_content = get_document_content(doc)
if document_content:
document_content = document_content.lower()
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
Devuelve:
Datos del documento como una cadena.
update_document_status_with_doc_id()
Actualiza el estado de un documento con un ID específico al estado dado.
genehmigung_user_1 = get_field_value(document_data, 'genehmigung_user_1', None)
if genehmigung_user_1 != "LEER":
update_document_status_with_doc_id(document_json['doc_id'], user, document_json['org_id'], "validated_pending_approval")
Parámetros:
doc_id*
string
El ID del documento a actualizar
user*
ya sea user ID
o UserAuthentication
object
El usuario que realiza la actualización
org_id*
string
El ID de la organización a la que pertenece el documento
status*
string
El nuevo estado del documento
message (opcional)
string
Mensaje opcional asociado con la actualización de estado
El valor predeterminado es None
doc_classification_class (opcional)
string
Clase de clasificación de documento opcional
El valor predeterminado es None
get_lov_values()
Obtiene los valores LOV de un org_id y clave específicos.
reverse_charge_to_check = get_lov_values(org_id, 'Kosten', return_type="list_of_values")
Parámetros:
org_id*
string
El ID de la organización a la que pertenece el documento
key*
string
La clave de la Lista de Valores requerida
return_type (opcional)
string
El tipo en el que se deben devolver los datos
El valor predeterminado es 'list_of_objects'
sub_org_id (opcional)
string
ID de suborganización opcional para filtrado
El valor predeterminado es None
language_code (opcional)
string
Este parámetro establece el idioma en el que se devolverán los valores. Acepta códigos de idioma, como "en" para inglés o "fr" para francés.
El valor predeterminado es ""
Devuelve:
Valores LOV como una lista de objetos o como una lista.
format_decimal_to_locale()
Formatea un valor decimal al formato en_US.UTF-8.
standard_value = "{0:.2f}".format(total)
formatted_value = format_decimal_to_locale(
standard_value, document_json['amount_format_locale']
)
Parámetros:
value*
float, decimal.Decimal, str
El ID de la organización a la que pertenece el documento
to_locale (opcional)
string
El tipo en el que se deben devolver los datos
El valor predeterminado es 'en_US.UTF-8'
max_decimal_places (opcional)
int
ID de suborganización opcional para filtrado
El valor predeterminado es 4
min_decimal_places (opcional)
int
El mínimo de lugares decimales que se deben considerar
El valor predeterminado es 2
value: El valor que debe ser formateado.
to_locale (opcional): El formato en el que se transforma el valor.
max_decimal_places (opcional): El máximo de lugares decimales que se deben considerar.
min_decimal_places (opcional): El mínimo de lugares decimales que se deben considerar.
Devuelve:
El valor formateado.
compare_values()
Compara dos valores por igualdad, manejando varios tipos de datos.
result = compare_values(10, "10")
Parámetros:
value1*
any
El primer valor a comparar
value2*
any
El segundo valor a comparar
Devuelve:
True si los valores son iguales y False si difieren
create_document_task()
Crea una tarea, la asigna a un usuario o grupo, establece la prioridad y opcionalmente envía un correo electrónico.
if not is_task_created:
create_document_task(user, document_data, "Herkunftsland außerhalb der EU", "Die Gelangensbestätigung kommt von einem Land außerhalb der EU. Bitte das MRN-Dokument anhängen.", "high", 1007, None, False)
document_data["document_json"]["country_check_task_created"] = True
Parámetros:
user*
ya sea user ID
o UserAuthentication
object
El usuario que realiza la actualización
document_data*
dictionary
Los datos del documento que contienen información del campo
title*
string
El título de la tarea
description*
string
La descripción de la tarea
priority*
string
La prioridad de la tarea
assigned_to_user_id*
int
El id del usuario al que se debe asignar la tarea
assigned_to_group_id*
int
El id del grupo al que se debe asignar la tarea
send_email*
bool
Determina si se debe enviar un correo electrónico o no
Devuelve:
Dict que indica si el proceso fue exitoso o no
set_document_sub_org_id()
Establece el sub_org_id de los datos del documento especificado.
if sub_org_id != current_sub_org_id:
document_data["document_json"]["sub_org_id4"] = sub_org_id
set_document_sub_org_id(document_data, sub_org_id)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
sub_org_id*
string
ID de suborganización opcional para filtrado
get_user_by_id()
Obtiene el usuario con el ID de usuario correspondiente.
requester_mail = str(get_user_by_id(str(requester)).email.lower())
Parámetros:
user_id*
string
El ID del usuario
Devuelve:
El usuario con el ID de usuario correspondiente
get_group_by_id()
Obtiene el grupo con el ID de grupo correspondiente.
group_name = str(get_group_by_id(assigned_to_group_id))
Parámetros:
group_id*
string
El ID del grupo
Devuelve:
El grupo con el ID de grupo correspondiente
get_user_by_email()
Obtiene el grupo con el ID de grupo correspondiente.
user_name = str(get_user_by_email(email)
Parámetros:
email*
any
El correo electrónico del usuario
Devuelve:
El usuario con el correo electrónico correspondiente
add_table_column()
Agrega una columna a la tabla especificada.
table = tables_dict.get("ORDER_CONFIRMATION_TABLE")
if table:
add_table_column(table, "PROMISED_DELIVERY_DATE")
Parámetros:
table*
string
La tabla donde se debe agregar la columna
col_name*
string
El nombre de la columna
default_value (opcional)
any
El valor inicial para el campo
El valor predeterminado es None
get_column_value()
Obtiene el valor de una columna especificada.
for row in table['rows']:
unit = get_column_value(row, "UNIT")
Parámetros:
row*
string
La fila donde se encuentra el valor
col_name*
string
El nombre de la columna
default_value (opcional)
any
El valor inicial para el campo
El valor predeterminado es None
is_clean (opcional)
bool
Convierte el valor a mayúsculas y elimina espacios adicionales
El valor predeterminado es False
Devuelve
Devuelve el valor de la columna especificada si existe; de lo contrario, devuelve
None
set_column_value()
Establece el valor de la columna especificada. Si la columna no existe, se creará.
supplier_id = get_field_value(document_data, "supplier_id", "")
quote_table = tables_dict["QUOTE_TABLE"]
for row in quote_table.get('rows', []):
set_column_value(row,"SUPPLIER_ID", supplier_id)
Parámetros:
row*
string
La fila donde se encuentra el valor
col_name*
string
El nombre de la columna
value*
any
El valor que se establecerá en la ubicación especificada
Devuelve:
True si el cambio fue exitoso
set_column_date_value()
Establece el valor de fecha de una columna especificada.
set_column_date_value(document_data, row, "DELIVERY_DATE", "2020-12-31", add_days=2)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
row*
string
La fila donde se encuentra el valor
col_name*
string
El nombre de la columna
value*
string
El valor de fecha a establecer en formato ISO (por ejemplo, "2020-12-31")
add_days (opcional)
int
Agregar días adicionales a la fecha dada
El valor predeterminado es 2
skip_weekend (opcional)
bool
Omitir la fecha si cae en fin de semana
El valor predeterminado es False
exclude_final_days (opcional)
ya sea string
o int
Especifica los días a excluir (0-6 o domingo a sábado)
set_column_amount_value()
Convierte el valor a cadena y establece el valor para la columna
Establece el contenido de la columna al valor
Formatea el valor según la configuración regional
quantity = float(quantity) / 1000
set_column_amount_value(document_data, row, "QUANTITY", str(quantity))
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
row*
string
La fila donde se encuentra el valor
column_name*
string
El nombre de la columna
value*
string
El valor a establecer para el campo (pase un número como cadena, por ejemplo, "123456")
delete_tables()
Esta función elimina las tablas de los datos del documento.
delete_tables(document_data)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
restore_tables()
Esta función restaura las tablas en los datos del documento.
restore_tables(document_data)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
remove_rows_from_table()
Elimina filas de la tabla especificada.
count = 1
start = 1
remove_rows_from_table(document_data,"INVOICE_TABLE",count,start)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
table_name*
string
El nombre de la tabla
count*
int
Cuántas líneas deben ser eliminadas
start*
int
El punto de inicio
remove_all_rows_except_one_from_table()
Elimina todas las filas excepto una de la tabla especificada.
count = 1
start = 1
remove_rows_from_table(document_data,"INVOICE_TABLE",count,start)
Parámetros:
document_data*
dictionary
Los datos del documento que contienen información del campo
line_number*
int
El número de la línea que no debe ser eliminada
Funciones Integradas de Python
También puedes utilizar algunas de las funciones integradas de Python:
abs(): Devuelve el valor absoluto de un número.
len(): Devuelve la longitud (número de elementos) de un objeto, como una lista o cadena.
isinstance(): Verifica si un objeto es una instancia de una clase o tipo particular.
print(): Imprime la salida en la consola.
round(): Redondea un número de punto flotante a un número especificado de lugares decimales.
str_to_bool(): Convierte una cadena a un valor booleano (True o False).
type(): Devuelve el tipo de un objeto.
dict(): Crea un objeto diccionario.
list(): Crea un objeto lista.
str(): Convierte un valor a una cadena.
float(): Convierte un valor a un número de punto flotante.
int(): Convierte un valor a un entero.
Para más detalles, visita la documentación oficial de Python: Funciones Integradas.
Funciones de la Clase String
También puedes usar estas funciones específicamente para trabajar con cadenas:
lower(): Convierte todos los caracteres en una cadena a minúsculas.
upper(): Convierte todos los caracteres en una cadena a mayúsculas.
split(): Divide una cadena en una lista basada en un delimitador (por ejemplo, espacio o coma).
startswith(): Verifica si una cadena comienza con un prefijo especificado.
endswith(): Verifica si una cadena termina con un sufijo especificado.
strip(): Elimina cualquier espacio en blanco al principio o al final de una cadena.
Funciones del Módulo Matemático de Python
Estas funciones son parte del módulo matemático y son útiles para operaciones matemáticas:
floor(): Devuelve el entero más grande menor o igual a un número dado.
ceil(): Devuelve el entero más pequeño mayor o igual a un número dado.
Para más información, consulta la documentación oficial de Python: Funciones del Módulo Matemático.
Función de Expresión Regular
re.search(): Busca un patrón dentro de una cadena y devuelve la primera coincidencia.
Consulta más detalles aquí: Documentación de re.search.
Funciones Externas
Aquí hay algunas funciones útiles de bibliotecas externas:
deepcopy(): Crea una copia de un objeto, incluidos los objetos anidados (del módulo copy). Documentación de Deepcopy.
levenshtein_distance(): Calcula el número de ediciones (inserciones, eliminaciones, sustituciones) requeridas para cambiar una cadena en otra. Esta función está disponible en la biblioteca Jellyfish.
Funciones de Fecha y Hora
Puedes usar las siguientes funciones para trabajar con fechas y horas:
strptime(): Convierte una cadena en un objeto datetime basado en un formato especificado.
strftime(): Formatea un objeto datetime en una cadena basada en un formato especificado.
Para más información, consulta la documentación oficial: Funciones de Fecha y Hora.
Last updated
Was this helpful?