Funções

Documentação Funcional

Este módulo contém funções para manipular dados de documentos e realizar várias operações relacionadas a campos de documentos.

Funções

set_field_value()

Define o valor de um campo nos dados do 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:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser definido

value*

any

O valor a ser definido para o campo

set_date_value()

Define o valor de um campo de data nos dados do 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:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser definido

value*

string

O valor da data a ser definido no formato ISO (por exemplo, "2020-12-31").

add_days (opcional)

int

Adiciona dias adicionais à data dada O padrão é 0

skip_weekend (opcional)

bool

Ignora a data se cair no final de semana O padrão é False

set_amount_value()

Define o valor de um campo de montante nos dados do 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:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser definido

value*

string

O valor a ser definido para o campo (passar um número como string, por exemplo, "123456"

get_field_value()

Obtém o valor de um campo dos dados do 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:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser definido

default_value (opcional)

any

Retorna default_value se nenhum valor de campo for encontrado O padrão é None

is_clean (opcional)

bool

Converte o valor para maiúsculas e remove espaços extras O padrão é False

Retorna:

  • Valor do campo especificado

create_new_field()

Cria um novo campo com o nome e 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:

Nome
Tipo
Descrição

field_name*

str

Os dados do documento contendo informações de campo

value (opcional)

any

O valor inicial para o campo O padrão é ""

Retorna:

  • Dicionário do novo campo criado

delete_field()

Exclui um campo dos dados do 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:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser excluído

Retorna:

  • Document_data como json e como dict após o campo ser excluído

set_is_required()

Define o atributo 'is_required' de um campo nos dados do 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:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser definido

value*

bool

O valor a ser definido para o campo

set_force_validation()

Define o atributo 'force_validation' de um campo nos dados do documento.

if supplier_id in supplier_to_check:
    set_force_validation(document_data, 'purchase_order', True, reset_validation=reset_validation)

Parâmetros:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser definido

value*

bool

O valor a ser definido para o campo

reset_validation (opcional)

bool

Define o atributo "is_validated" para o valor especificado O padrão é False

set_field_as_invalid()

Marca um campo na tela de validação como inválido e o destaca.

if not document_date:
    set_field_as_invalid(document_data, "document_date", "Es ist kein Datum vorhanden", "INVALID_VALUE")

Parâmetros:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser marcado como inválido

message*

string

A mensagem de validação para o campo

code (opcional)

string

Código de erro para a validação

O padrão é None

set_field_attribute()

Define um atributo personalizado de um campo nos dados do 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:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

field_name*

string

O nome do campo a ser definido

attribute_name*

string

O nome do atributo a ser definido

value*

any

O valor a ser definido para o atributo

is_supplier_valid()

Verifica se um fornecedor é válido com base nos critérios fornecidos.

bool = is_supplier_valid(user, {"name": "Supplier Inc."})

Parâmetros:

Nome
Tipo
Descrição

user*

UserAuthentication

O usuário autenticado

filter_data_json*

json

Critérios de filtragem para validar o fornecedor

sub_org_id (opcional)

string

ID de sub-organização opcional para filtragem O padrão é None

Retorna:

  • True, se o usuário for válido

  • False se o usuário não for válido

get_document_content()

Decodifica os dados do documento e os retorna como uma string.

document_content = get_document_content(doc)
if document_content:
    document_content = document_content.lower()

Parâmetros:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

Retorna:

  • Dados do documento como uma string.

update_document_status_with_doc_id()

Atualiza o status de um documento com um ID específico para o status 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:

Nome
Tipo
Descrição

doc_id*

string

O ID do documento a ser atualizado

user*

ou user ID ou UserAuthentication object

O usuário que está realizando a atualização

org_id*

string

O ID da organização à qual o documento pertence

status*

string

O novo status do documento

message (opcional)

string

Mensagem opcional associada à atualização de status O padrão é None

doc_classification_class (opcional)

string

Classe de classificação de documento opcional O padrão é None

get_lov_values()

Obtém os valores LOV de um org_id e chave específicos.

reverse_charge_to_check = get_lov_values(org_id, 'Kosten', return_type="list_of_values")

Parâmetros:

Nome
Tipo
Descrição

org_id*

string

O ID da organização à qual o documento pertence

key*

string

A chave da Lista de Valores necessária

return_type (opcional)

string

O tipo no qual os dados devem ser retornados O padrão é 'list_of_objects'

sub_org_id (opcional)

string

ID de sub-organização opcional para filtragem O padrão é None

Retorna:

  • Valores LOV como uma lista de objetos ou como uma lista.

format_decimal_to_locale()

Formata um valor decimal para o 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:

Nome
Tipo
Descrição

value*

float, decimal.Decimal, str

O ID da organização à qual o documento pertence

to_locale (opcional)

string

O tipo no qual os dados devem ser retornados O padrão é 'en_US.UTF-8'

max_decimal_places (opcional)

int

ID de sub-organização opcional para filtragem O padrão é 4

min_decimal_places (opcional)

int

O mínimo de casas decimais que devem ser consideradas O padrão é 2

  • value: O valor que deve ser formatado.

  • to_locale (opcional): O formato no qual o valor é transformado.

  • max_decimal_places (opcional): O máximo de casas decimais que devem ser consideradas.

  • min_decimal_places (opcional): O mínimo de casas decimais que devem ser consideradas.

Retorna:

  • O valor formatado.

compare_values()

Compara dois valores para igualdade, lidando com vários tipos de dados.

result = compare_values(10, "10")

Parâmetros:

Nome
Tipo
Descrição

value1*

any

O primeiro valor a comparar

value2*

any

O segundo valor a comparar

Retorna:

  • True se os valores forem iguais e False se forem diferentes

create_document_task()

Cria uma tarefa, atribui-a a um usuário ou grupo, define a prioridade e, opcionalmente, envia um e-mail.

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:

Nome
Tipo
Descrição

user*

ou user ID ou UserAuthentication object

O usuário que está realizando a atualização

document_data*

dictionary

Os dados do documento contendo informações de campo

title*

string

O título da tarefa

description*

string

A descrição da tarefa

priority*

string

A prioridade da tarefa

assigned_to_user_id*

int

O id do usuário ao qual a tarefa deve ser atribuída

assigned_to_group_id*

int

O id do grupo ao qual a tarefa deve ser atribuída

send_email*

bool

Determina se um e-mail deve ser enviado ou não

Retorna:

  • Dict que indica se o processo foi bem-sucedido ou não

set_document_sub_org_id()

Define o sub_org_id dos dados do 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:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

sub_org_id*

string

ID de sub-organização opcional para filtragem

get_user_by_id()

Obtém o usuário com o ID de usuário correspondente.

requester_mail = str(get_user_by_id(str(requester)).email.lower())

Parâmetros:

Nome
Tipo
Descrição

user_id*

string

O ID do usuário

Retorna:

  • O usuário com o ID de usuário correspondente

get_group_by_id()

Obtém o grupo com o ID de grupo correspondente.

group_name  = str(get_group_by_id(assigned_to_group_id))

Parâmetros:

Nome
Tipo
Descrição

group_id*

string

O ID do grupo

Retorna:

  • O grupo com o ID de grupo correspondente

add_table_column()

Adiciona uma coluna à tabela especificada.

table = tables_dict.get("ORDER_CONFIRMATION_TABLE")

if table:
    add_table_column(table, "PROMISED_DELIVERY_DATE")

Parâmetros:

Nome
Tipo
Descrição

table*

string

A tabela onde a coluna deve ser adicionada

col_name*

string

O nome da coluna

default_value (opcional)

any

O valor inicial para o campo

O padrão é None

get_column_value()

Obtém o valor de uma coluna especificada.

for row in table['rows']:
        unit = get_column_value(row, "UNIT")

Parâmetros:

Nome
Tipo
Descrição

row*

string

A linha onde o valor está localizado

col_name*

string

O nome da coluna

default_value (opcional)

any

O valor inicial para o campo O padrão é None

is_clean (opcional)

bool

Converte o valor para maiúsculas e remove espaços extras O padrão é False

Retorna:

  • O valor da coluna especificada

set_column_value()

Define o valor de uma coluna 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:

Nome
Tipo
Descrição

row*

string

A linha onde o valor está localizado

col_name*

string

O nome da coluna

value*

any

O valor que será definido na localização especificada

Retorna:

  • True se a alteração foi bem-sucedida

set_column_date_value()

Define o valor de data de uma coluna especificada.

set_column_date_value(document_data, row, "DELIVERY_DATE", "2020-12-31", add_days=2)

Parâmetros:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

row*

string

A linha onde o valor está localizado

col_name*

string

O nome da coluna

value*

string

O valor da data a ser definido no formato ISO (por exemplo, "2020-12-31")

add_days (opcional)

int

Adiciona dias adicionais à data dada O padrão é 2

set_column_amount_value()

  • Converte o valor para string e define o valor para a coluna

  • Define o conteúdo da coluna para o valor

  • Formata o valor de acordo com a localidade

quantity = float(quantity) / 1000
set_column_amount_value(document_data, row, "QUANTITY", str(quantity))

Parâmetros:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

row*

string

A linha onde o valor está localizado

column_name*

string

O nome da coluna

value*

string

O valor a ser definido para o campo (passar um número como string, por exemplo, "123456")

remove_rows_from_table()

Remove linhas da tabela especificada.

count = 1
start = 1
remove_rows_from_table(document_data,"INVOICE_TABLE",count,start) 

Parâmetros:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

table_name*

string

O nome da tabela

count*

int

Quantas linhas devem ser excluídas

start*

int

O ponto de partida

remove_all_rows_except_one_from_table()

Remove todas as linhas, exceto uma, da tabela especificada.

count = 1
start = 1
remove_rows_from_table(document_data,"INVOICE_TABLE",count,start) 

Parâmetros:

Nome
Tipo
Descrição

document_data*

dictionary

Os dados do documento contendo informações de campo

line_number*

int

O número da linha que não deve ser removida

Funções Internas do Python

Você também pode utilizar algumas das funções internas do python:

  • abs(): Retorna o valor absoluto de um número.

  • len(): Retorna o comprimento (número de itens) de um objeto, como uma lista ou string.

  • isinstance(): Verifica se um objeto é uma instância de uma classe ou tipo específico.

  • print(): Imprime a saída no console.

  • round(): Arredonda um número de ponto flutuante para um número especificado de casas decimais.

  • str_to_bool(): Converte uma string em um valor booleano (True ou False).

  • type(): Retorna o tipo de um objeto.

  • dict(): Cria um objeto dicionário.

  • list(): Cria um objeto lista.

  • str(): Converte um valor em uma string.

  • float(): Converte um valor em um número de ponto flutuante.

  • int(): Converte um valor em um inteiro.

Para mais detalhes, visite a documentação oficial do Python: Funções Internas.

Funções da Classe String

Você também pode usar essas funções especificamente para trabalhar com strings:

  • lower(): Converte todos os caracteres em uma string para minúsculas.

  • upper(): Converte todos os caracteres em uma string para maiúsculas.

  • split(): Divide uma string em uma lista com base em um delimitador (por exemplo, espaço ou vírgula).

  • startswith(): Verifica se uma string começa com um prefixo especificado.

  • endswith(): Verifica se uma string termina com um sufixo especificado.

  • strip(): Remove qualquer espaço em branco no início ou no final de uma string.

Funções do Módulo Math do Python

Essas funções fazem parte do módulo math e são úteis para operações matemáticas:

  • floor(): Retorna o maior inteiro menor ou igual a um número dado.

  • ceil(): Retorna o menor inteiro maior ou igual a um número dado.

Para mais informações, confira a documentação oficial do Python: Funções do Módulo Math.

Função de Expressão Regular

  • re.search(): Procura um padrão dentro de uma string e retorna a primeira correspondência.

Veja mais detalhes aqui: Documentação re.search.

Funções Externas

Aqui estão algumas funções úteis de bibliotecas externas:

  • deepcopy(): Cria uma cópia de um objeto, incluindo objetos aninhados (do módulo copy). Documentação Deepcopy.

  • levenshtein_distance(): Calcula o número de edições (inserções, exclusões, substituições) necessárias para mudar uma string em outra. Esta função está disponível na biblioteca Jellyfish.

Funções de Data e Hora

Você pode usar as seguintes funções para trabalhar com datas e horas:

  • strptime(): Converte uma string em um objeto datetime com base em um formato especificado.

  • strftime(): Formata um objeto datetime em uma string com base em um formato especificado.

Para mais informações, confira a documentação oficial: Funções de Data e Hora.

Last updated

Was this helpful?