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:

Nombre
Tipo
Descripción

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

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:

Nombre
Tipo
Descripción

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 la fecha a establecer en formato ISO (por ejemplo, "2020-12-31").

add_days (opcional)

int

Agrega días adicionales a la fecha dada El valor predeterminado es 0

skip_weekend (opcional)

bool

Salta la fecha si cae en fin de semana El valor predeterminado es False

set_amount_value()

Establece el valor de un campo de monto 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:

Nombre
Tipo
Descripción

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"

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:

Nombre
Tipo
Descripción

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 el valor del campo El valor predeterminado es None

is_clean (opcional)

bool

Convierte el valor a mayúsculas y elimina los 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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

user*

UserAuthentication

El usuario autenticado

filter_data_json*

json

Criterios de filtrado para validar al proveedor

sub_org_id (opcional)

string

ID de sub-organizació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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

doc_id*

string

El ID del documento a actualizar

user*

ya sea user ID o UserAuthentication objeto

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:

Nombre
Tipo
Descripción

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 sub-organización opcional para filtrado El valor predeterminado es None

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:

Nombre
Tipo
Descripción

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 debe transformar el dato El valor predeterminado es 'en_US.UTF-8'

max_decimal_places (opcional)

int

ID de sub-organizació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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

user*

ya sea user ID o UserAuthentication objeto

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:

Nombre
Tipo
Descripción

document_data*

dictionary

Los datos del documento que contienen información del campo

sub_org_id*

string

ID de sub-organizació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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

group_id*

string

El ID del grupo

Devuelve:

  • El grupo con el ID de grupo 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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

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 los espacios adicionales El valor predeterminado es False

Devuelve

  • El valor de la columna especificada

set_column_value()

Establece el valor de una columna especificada.

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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

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

Agrega días adicionales a la fecha dada El valor predeterminado es 2

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:

Nombre
Tipo
Descripción

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")

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:

Nombre
Tipo
Descripción

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:

Nombre
Tipo
Descripción

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 Math de Python

Estas funciones son parte del módulo math 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 Math.

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 objetos anidados (del módulo copy). Documentación de Deepcopy.

  • levenshtein_distance(): Calcula el número de ediciones (inserciones, eliminaciones, sustituciones) necesarias 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?