Obtener OT

Las órdenes de trabajo en Persat, pueden ser creadas tanto desde la web como desde la API. Una vez creadas se les asigna un id unico, mediante el cual podemos luego consultar su contenido.

Para obtener una OT particular se debe realizar un GET como el que se muestra a continuación.

IMPORTANTE: El id de la OT es un string, si bien hoy en día los ids representan números, hay que considerar la posibilidad de que sean alfanuméricos a futuro.

GET https://api.persat.com.ar/v1/work-orders/wo_id

Path Parameters

NameTypeDescription

wo_id*

String

Identificador de la Orden de Trabajo.

Headers

NameTypeDescription

Authorization*

String

Bearer API_KEY

Analizando la Respuesta

{
    "success": true,
    "data": {
        "_id": "134",            
        "note_id": 603,
        "state": "PROYECTADA",
        "created": "2022-05-20T10:14:44.000Z", 
        "created_by_user_name": "usuario@empresa.com.ar",
        "created_by_user_id": 28,
        "labels_ids": [
            1,
            2
        ],
        "client": {
            "id": 10216,
            "name": "Fabrica de Motores",
            "uid_client": "CL3213L"
        },
        "wo_data": {
            "schema_id": 452,
            "wo_instance": null,
            "wo_rule_id": null,
            "service_time": 45,
            "instructions": {
                "formvalues": {
                    "FWMg5UsWo": "Revisar las tejas",
                    "FWcimEHVv": "Cobrar",
                    "FWXyxyhlj": 250.3     
                }
            }
        },
        "assignation_info": {
            "date": "2022-05-20T00:00:00.000Z",
            "starts_min": 480,
            "responsibles_required": 1,
            "responsibles": []
        }
    }
}

_id: Identificador de la OT. Es un string, si bien hoy en dia representa un número, puede ser modificado a futuro para ser alfanumerico.

Existe un caso particular en donde el _id = -1.

Esto solo va a ocurrir cuando sucedan dos cosas:

  1. Estemos usando las OTs repetitivas de Persat. Esas OTs que se generaron a partir de una regla, como "Repetir cada dos semanas los dias miercoles",

  2. Hagamos una consulta del tipo Listar OTs, en donde por ejemplo pedimos las OTs de fechas futuras

Luego, las OTs que son generadas por reglas, no tienen _id definido hasta que "ocurran". La forma de identificarlas es por medio de los fields wo_data.wo_rule_id y wo_data.wo_instance, que son explicados mas abajo

note_id: NO USAR. Valor interno usado por Persat. Tener en cuenta que es posible que a futuro no se reciba mas este valor.

created: Fecha de creación de la OT hora local. No tiene relación con la fecha de asignación del trabajo.

Si bien la fecha esta representada en UTC, hay que considerarla en horario local. Esto se debe a un requerimiento de mantener la compatibilidad con una versión anterior de Persat. Entonces para el caso del ejemplo, y sin importar si soy un cliente de Argentina, Ecuardor o Mexico, la fecha mostrada representa el día 20 de Mayo de 2022 a las 10:14 AM hora de mi país

"created": "2022-05-20T10:14:44.000Z",

created_by_user_name: Nombre del usuario que creó la OT. Los nombres de usuario en Persat son emails. En el caso que haya sido creada a través de la API se recibirá "Creado por Api"

created_by_user_id: id del usuario nombrado arriba. En el caso que la OT haya sido creado a traves de la API, el valor será -1

Para poder ver los ids de cada uno de los usuarios, verificá la sección Obtener Formulario, en donde también se utiliza el campo "created_by_user_id"

labels_ids: Array de numbers, identificando etiquetas previamente creadas en Persat.

Es una "referencia débil" a las etiquetas, es decir que puede que no existan a la hora de hacer la consulta, debido a que el usuario administrador de Persat las sacó del sistema, o las modificó por otras.

client: Datos del cliente en el que se encuentra el formulario

  • id: Id interno. NO UTILIZAR. Preparar el sistema para incluso dejar de recibir este dato a futuro.

  • name: Nombre del cliente

  • uid_client: id del cliente. Es el que se utiliza como identificador de este cliente. Es un valor único.

wo_data: Datos de la Orden de Trabajo

wo_data.schema_id: Identificador del esquema (plantilla) de la OT. Por ejemplo: Puedo tener una OT para realizar un "Presupuesto" y otra para hacer un trabajo de "Desratización". Para saber de que tipo de OT estoy hablando es que se usa el schemaid. El valor del schema_id incluso cambia entre versión y versión del mismo tipo de OT.

Para poder conocer los schema_id de las OTs disponibles Indetificación de OTs y widgets

También puede obtener el esquema con el endpoint Obtener estructura/esquema de un Tipo de OT

wo_data.wo_rule_id: Si la OT fue creada por una regla de repetición, entonces este es el identificador de la regla. Por ejemplo, una regla puede ser que la OT se cree "todos los miercoles cada 2 semanas". En caso que no sea una OT generada por repetición, el valor será null.

wo_data.wo_instance: Siendo la OT generada por una repetición, entonces este numero indicará el nro de repetición comenzando desde 1. Siguiendo con el ejemplo del párrafo anterior, el primer miercoles el valor será 1, el miercoles pasadas las 2 semanas el valor será 2 y asi continuando. En caso que no sea una OT generada por repetición, el valor será null.

Las reglas de repetición solo pueden ser creadas desde la web de Persat con un usuario que tenga los permisos adecuados para tal acción.

wo_data.service_time: Valor en minutos de la duración estimada para realizar el trabajo.

wo_data.instructions: Contiene el field formvalues que se explica a continuación. Sin embargo puede no estar definido dependiendo el estado de la OT. Ver ejemplos en las subsecciones posteriores.

wo_data.instructions.formvalues: Datos de las instrucciones que le llegan al técnico en su celular. Se usa para indicar que tipo de trabajo realizar.

Cada tipo de formulario esta conformado por widgets de distinto tipo, como por ejemplo: Campo Texto, Campo Lista, Campo número, etc.

Para el caso del ejemplo, se puede visualizar que el formulario cuenta con 3 widgets. A priori no se pude deducir exactamente que tipo de widget es cada uno, sin embargo podemos inferir que el widget con id FWXyxyhlj es un CAMPO NUMERO

formvalues: {
    "FWMg5UsWo": "Revisar las tejas",
    "FWcimEHVv": "Cobrar",
    "FWXyxyhlj": 250.3     
}

Dependiendo del tipo de widget, es el tipo de valor. Un widget de tipo Texto, contendrá un string, mientras que uno de tipo Numero contendra un number. Ver todos los widgets disponibles en la siguiente sección: Tipos de Widgets

En cuanto a conocer la identificación de cada uno de los widgets: Identificación de los Widgets en OTs

El formulario de Instrucciones en las Ordenes de Trabajo tiene algunas limitaciones en cuanto a los componentes (widgets) que se pueden utilizar. Ver Widgets habilitados

wo_data.assignation_info: Objeto JSON con datos respecto a la asignación de la OT. No todos los campos estan presentes, ya que dependen del estado de la OT. Ver ejemplos en las siguientes subsecciones.

wo_data.assignation_info.date : Fecha en que debe realizarse el trabajo

Si bien la fecha esta representada en UTC, hay que considerarla en horario local. Esto se debe a un requerimiento de mantener la compatibilidad con una versión anterior de Persat. Entonces para el caso del ejemplo, y sin importar si soy un cliente de Argentina, Ecuardor o Mexico, la fecha mostrada representa el día 20 de Mayo de 2022.

No contiene horas, minutos segundos ni milisegundos, porque representa el día. Es decir que la OT esta definida para hacerse el día 20 de Mayo. Los datos del horario se obtienen de starts_min

"...assignation_info.date": "2022-05-20T00:00:00.000Z",

wo_data.assignation_info.starts_min : Number representando los minutos transcurridos desde las 00:00 hs del día. Para el caso del ejemplo 480 representa las 08:00 AM.

wo_data.assignation_info.responsibles_required: Number que indica la cantidad de técnicos necesaros para el trabajo. Valor mínimo 1.

wo_data.assignation_info.responsibles: Array de objetos JSON. Puede estar vacío como en el caso de este ejemplo. Pero si la OT estuviese asignada el objeto tendria estos fields indicando los tecnicos responsables.

"responsibles": [
    {
        "user_id": 28,
        "user_name": "jose@empresa.com.ar"
    }, {...}
    ]

En caso que haya más de un responsable, el item con indice 0 del array (el primero en el array) es el responsable principal, y los otros técnicos serían los acompañantes.

Last updated