Ir para o conteúdo

API de Apontamentos

Disponibilizar API que automatize o apontamento de produção, com a menor interferência possível do Operador da máquina neste processo, integrando assim, o FoccoERP com ferramentas de gerenciamento fabril.

Escopo da Integração

  • Permite realizar o apontamento das ordens de fabricação com outros softwares e integrar os dados retornados com o FoccoERP.

  • Permite que o analista de PCP acompanhe os apontamentos das ordens de fabricação.

  • Permite filtrar os apontamentos por ordem de fabricação, centro de trabalho, recurso, operador, data, item.

  • Permite realiza serviço de apontamento das ordens de fabricação através de ferramentas de apontamento, retornando para o FoccoERP:

    • Data de importação da Ordem;

    • Número da Ordem;

    • Código do Item da Ordem;

    • Descrição da Operação;

    • Quantidade na operação da Ordem;

    • Quantidade apontada na operação da Ordem;

    • Quantidade Pendente na Operação da Ordem – Quantidade Apontada;

    • Quantidade de Refugo apontada na operação da Ordem;

    • Motivo do Refugo no retorno.

Situações não tratadas

As situações não tratadas pelo produto estão listadas abaixo:

  • Operações de retrabalho;

  • Destinar refugos

Chamadas WebService

Autenticação

Autenticação

POST

~/Authentication/RequestAccess?User=API&Password={senha usuário API}&AllowNewSession=true

Retorno
{
    "Token": {token},
    "ErrorReason": 0,
    "CustomErrorMessage": null,
    "IsSuccessful": true
}

Logout

Logout

POST

~/Authentication/Logout

Header

Authorization

Bearer { token}

Buscar Centros de Trabalho

Buscar Centros de Trabalho

POST

~/api/Commands/Manufatura.Engenharia.GetCentrosTrabalhoCommand

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

skip

Quantidade de registros para “saltar”

take

Quantidade de registros que serão retornados

Retorno
{
    "$values": [
        {
            "Codigo": "10",
            "Descricao": "FURAÇÃO",
            "Empresa": {
                "Codigo": 10,
                "NomeFantasia": "BRASILEIRA S/A (TESDES)",
                "RazaoSocial": "FOCCOERP_ORIG_3_17",
                "ID": 10
            },
            "ID": 39
        }
    ]
}

Buscar Recursos (Máquinas)

Buscar Recursos (Máquinas)

POST

~/api/Commands/Manufatura.Producao. GetRecursosIndustriaisByTipoCommand

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

skip

Quantidade de registros para “saltar”

take

Quantidade de registros que serão retornados

tipoRecursoIndustrial

“ID”: “M”

Retorno
{
    "$values": [
        {
            "$id": "45107",
            "Codigo": "100",
            "Descricao": "APARELHO DE SOLDA  250A TCM 325",
            "Tipo": {
                "ID": "M"
            },
            "ID": 58,
        }
    ]
}

Buscar Ordens de Produção Abertas

Buscar Ordens de Produção Abertas

POST

~/api/Commands/Manufatura.Producao.GetOrdensAbertasCommand

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

getOrdensRequest

{
    "getOrdensRequest":
    {
        "Take":1,
        "Skip":0,
        "DtEmissGreaterThanOrEqual": "2015-06-28T00:00:00",
        "DtEmissLesserThanOrEqual": "",
        "CodigoItens": ["CANETA"],
        "MascaraIDs": [],
        "CodigoMaquinas": [],
        "CodigoCentrosTrabalho": [],
        "CodigoOperacoes": [],
        "OrdemIDs": [],
        "NumeroOrdens": [27],
        "DtCriacaoGreaterThanOrEqual": "2024-01-07T00:00:00-03:00",
        "DtCriacaoLesserThanOrEqual": "",
        "DtAlteracaoGreaterThanOrEqual": "",
        "DtAlteracaoLesserThanOrEqual": ""
    }
}
Retorno

Para buscar as ordens de produção abertas, no body deve conter o filtro abaixo.

Observação

Os campos podem ser adicionados conforme necessidade de filtro.

Atenção para o formato de data.

{
    "getOrdensRequest":
    {
        "Take":1,
        "Skip":0,
        "DtEmissGreaterThanOrEqual": "2015-06-28T00:00:00",
        "DtEmissLesserThanOrEqual": "",
        "CodigoItens": ["CANETA"],
        "MascaraIDs": [],
        "CodigoMaquinas": [],
        "CodigoCentrosTrabalho": [],
        "CodigoOperacoes": [],
        "OrdemIDs": [],
        "NumeroOrdens": [27],
        "DtCriacaoGreaterThanOrEqual": "2024-01-07T00:00:00-03:00",
        "DtCriacaoLesserThanOrEqual": "",
        "DtAlteracaoGreaterThanOrEqual": "",
        "DtAlteracaoLesserThanOrEqual": ""
    }
}

Abaixo, um exemplo do retorno:

{"$values": [{
            "Item": {
                "ItemMascara": {
                    "$id": "50981",
                    "Mascara": "AZUL#CILÍNDRICO",
                    "Ativo": true,
                    "Engenharia": {
                        "$id": "50982"
                        "ItemEngenharia": {
                            "PesoLiquido": 0,
                            "PesoBruto": 0,
                            "Cubagem": 0,
                            "ID": 31733},
                        "PesoLiquido": 0,
                        "PesoBruto": 0,
                        "Cubagem": 0,
                        "ID": 204212},
                    "ItemEmpresa": {
                        "CadastroItem": {
                            "Codigo": "CANETA",
                            "DescTecnica": "ITEM INDUSTRIAL C/ ESTR",
                            "Ativo": true,
                            "ID": 31520},
                        "Empresa": {
                            "Codigo": 10,
                            "NomeFantasia": "BRASILEIRA S/A (TESDES)",
                            "RazaoSocial": "FOCCOERP_ORIG_3_17",
                            "ID": 10 },
                        "ItemPDM": {},
                        "Engenharia": {},
                        "Planejamento": {
                            },
                            "ID": 31467}, "ID": 32449
                    }, "ID": 30861
                    },
                "Mascara": "AZUL#CILÍNDRICO",
                "MascaraID": 30861,
                "Engenharia": {},
                "IsItemConfigurado": true,
                "ItemEmpresa": {},
                "Codigo": "CANETA",
                "DescTecnica": "ITEM INDUSTRIAL C/ ESTR"
            },
            "Numero": 1006,
            "Quantidade": 2,
            "DtEmissao": "2016-12-12T00:00:00-02:00",
            "Observacao": null,
            "TipoOrdem": {
                "$id": "50989",
                "ID": "OFM",
                "Type": 
            },
            "Finalizada": false,
            "RoteirosProducao": {
                "$id": "50990"},
            "ID": 400505
        }
    ]
}

Buscar Ordem pelo ID

Buscar Ordem pelo ID

GET

~/api/Entities/Manufatura.Producao.OrdemProducao/{ID}

Header

Authorization

Bearer { token}

Content-Type

application/json

Retorno
{ 
"Item": {
        "$type": ,
        "ItemMascara": {
            "Mascara": "AZUL#CILÍNDRICO",
            "Ativo": true,
            "Engenharia": {
                "ItemConfigurado": null,
                "ItemEngenharia": {
                    "ItemEmpresa": null,
                    "PesoLiquido": 0,
                    "PesoBruto": 0,
                    "Cubagem": 0,
                    "ID": 31733},
                "PesoLiquido": 0,
                "PesoBruto": 0,
                "Cubagem": 0,
                "ID": 204212},
            "ItemEmpresa": {
                "CadastroItem": {
                    "Codigo": "CANETA",
                    "DescTecnica": "ITEM INDUSTRIAL C/ ESTR",
                    "Ativo": true,
                    "ID": 31520},
                "Empresa": {
                    "Codigo": 10,
                    "NomeFantasia": "BRASILEIRA S/A (TESDES)",
                    "RazaoSocial": "FOCCOERP_ORIG_3_17",
                    "ID": 10},
                "ItemPDM": {},
                "Engenharia": {},
                "Planejamento": {
                    "ItemEmpresa": {},
                    "ID": 31467},
                "ID": 32449},
            "ID": 30861},
        "Mascara": "AZUL#CILÍNDRICO",
        "MascaraID": 30861,
        "Engenharia": {},
        "ItemEmpresa": {},
        "Codigo": "CANETA",
        "DescTecnica": "ITEM INDUSTRIAL C/ ESTR"
    },
    "Numero": 1006,
    "Quantidade": 2,
    "DtEmissao": "2016-12-12T00:00:00-02:00",
    "Observacao": null,
    "TipoOrdem": {
        "ID": "OFM",
        "Type": 
    },
    "Finalizada": false,
    "RoteirosProducao": {},
    "ID": 400505
}

Buscar Recurso pelo ID

Buscar Recurso pelo ID

GET

~/api/Entities/Manufatura.Producao.RecursoIndustrial/{ID}

Header

Authorization

Bearer { token}

Content-Type

application/json

Retorno
{
    "Codigo": "100",
    "Descricao": "APARELHO DE SOLDA  250A TCM 325",
    "Tipo": {
        "ID": "M"
},
    "ID": 58
}

Buscar Centro de Trabalho pelo ID

Buscar Centro de Trabalho pelo ID

GET

~/api/Entities/Manufatura.Engenharia.CentroTrabalho/{ID}

Header

Authorization

Bearer { token}

Content-Type

application/json

Retorno
{
    "Codigo": "10",
    "Descricao": "FURAÇÃO",
    "Empresa": {
        "Codigo": 10,
        "NomeFantasia": "BRASILEIRA S/A (TESDES)",
        "RazaoSocial": "FOCCOERP_ORIG_3_17",
        "ID": 10
    },
    "ID": 39
}

Causa de Refugo

Causa de Refugo

POST

~/api/Commands/Manufatura.Producao.Apontamento.GetCausasRefugoCommand

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

skip

Quantidade de registros para “saltar”

take

Quantidade de registros que serão retornados

Retorno
{
"$values":[
        {
            "Codigo": 1,
            "Descricao": "MATÉRIA PRIMA COM PROBLEMA",
            "Empresa": null,
            "ID": 1
        }
    ]
}

Motivos de Refugo

Motivos de Refugo

POST

~/api/Commands/Manufatura.Producao.Apontamento.GetMotivosRefugoCommand

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

skip

Quantidade de registros para “saltar”

take

Quantidade de registros que serão retornados

Retorno
{
    "$values": [
        {
            "Codigo": 1,
            "Descricao": "FURAÇÃO ERRADA",
            "GrupoMotivoRefugo": null,
            "Ativo": true,
            "ID": 6
    },
        {
            "Codigo": 2,
            "Descricao": "DIMENSÃO ERRADA",
            "GrupoMotivoRefugo": null,
            "Ativo": true,
            "ID": 7
        },
        {
            "Codigo": 3,
            "Descricao": "FALHA MATÉRIA PRIMA",
            "GrupoMotivoRefugo": null,
            "Ativo": true,
            "ID": 8
        }
    ]

Funcionários

Funcionários

POST

~/api/Commands/Utilitarios.Funcionario.GetFuncionariosCommand

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

skip

Quantidade de registros para “saltar”

take

Quantidade de registros que serão retornados

funcoes

Lista de códigos de funções para filtrar os funcionários

ativo

Determina se retornará somente os funcionários com cadastro ativo

{
 "skip": 0,
 "take": 50,
 "funcoes": ["FUNC", "CMPR"],
 "ativo": 1
}
Retorno
{“$values”: [{
"Codigo": ”1”,
            "Nome": "FOCCO3I",
            "Ativo": true,
            "Usuario": {
                "Login": "FOCCO3I",
                "LoginLDAP": null,
                "Nome": "FOCCO3I",
                "Email": "teste@focco.com.br",
                "Ativo": true,
                "DtInicio": "1980-01-01T00:00:00-02:00",
                "DtFim": "2020-12-01T00:00:00-02:00",
                "ID": 1},
            "Funcoes": [{
                    "ID": "CMPR",
                    "Description": "Comprador"},
                {
                    "ID": "FUNC",
                    "Description": "Funcionário"},],
            "ID": 1369
        }]}

Apontamentos por Operação da Ordem

Apontamentos por Operação da Ordem

POST

~/api/Commands/Manufatura.Producao.Apontamento.GetApontamentosByOrdemRoteiroCommand

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

skip

Quantidade de registros para “saltar”

take

Quantidade de registros que serão retornados

ordemRoteiroID

ID do roteiro da Ordem

Retorno
{
    "$values": [
        {
            "Quantidade": 1,
            "DataApontamento": "2018-07-06T00:00:00-03:00",
            "TipoApontamento": {
                "ID": "TP",
                "Description": "Tempo Padrão"
            },
            "DataHoraInicio": null,
            "DataHoraFim": null,
            "Tempo": null,
            "Intervalo": 0,
            "Funcionario": {
                "Codigo": "1",
                "Nome": "FOCCO3I",
                "ID": 1369
            },
            "Final": true,
            "Usuario": "JOAO (MAQUINA-043) / joao.silva / DOMINIO\\MAQUINA-043",
            "QuantidadeRefugos": 2,
            "Refugos": {
        "$values": [
                    {
                        "Quantidade": 2,
                        "Motivo": {
                            "Codigo": 3,
                            "Descricao": "FALHA MATÉRIA PRIMA",
                            "Ativo": true,
                            "ID": 8
                        },
                        "Causa": {
                            "Codigo": 1,
                            "Descricao": "MATÉRIA PRIMA COM PROBLEMA",
                            "ID": 1
                        },
                        "ID": 97
                    }
                ]
            },
            "OrigemApontamento": "API",
            "ApontamentoMaquina": {
                "Maquina": {
                    "$id": "33",
                    "Codigo": "110",
                    "Descricao": "FURADEIRA",
                    "Ativo": true,
                    "Tipo": {
                        "ID": "M",
                        "Description": "Máquina"
                    },
                    "ID": 68,
                },
                "ID": 329625
            },
            "ID": 266503
        }
    ]

Incluir Apontamento

Incluir Apontamento

POST

~/api/Entities/Manufatura.Producao.Apontamento.ApontamentoProducao

Header

Authorization

Bearer { token}

Content-Type

application/json

Body (JSON)

Enviar Json do apontamento conforme exemplos abaixo

Retorno
{
    "ConcurrencyErrorOccurred": false,
    "Succeeded": false,
    "AnySucceeded": false,
    "Failed": true,
    "AllFailed": true,
    "BaseErrorMessage": null,
    "ErrorMessage": {mensagem do erro},
    "Exception": null
}

JSON Incluir Apontamento Tempo Padrão

JSON Incluir Apontamento Tempo Padrão
{
    "OrdemRoteiro": {
        "ID":332945
    },
    "Quantidade": 1,
    "DataApontamento": "2018-07-06T11:01:14-03:00",
    "TipoApontamento": {
        "ID": "TP"
    },
    "DataHoraInicio": null,
    "DataHoraFim": null,
    "Tempo": null,
    "QtdeHomens": null,
    "Intervalo": 0,
    "Funcionario": {
        "ID": 1369
    },
    "Final": false,
    "Usuario": "Apontamento API",
    "Refugos": {
        "$values": []
    },
    "OrigemApontamento": "API",
    "ApontamentoMaquina": {
        "Maquina": {
            "ID": 68
        }
    }
}

JSON Incluir Apontamento Intervalo de Hora

JSON Incluir Apontamento Intervalo de Hora
{
    "OrdemRoteiro": {
        "ID":333479
    },
    "Quantidade": 1,
    "DataApontamento": null,
    "TipoApontamento": {
        "ID": "IH"
    },
    "DataHoraInicio": "2018-07-06T08:00:00-03:00",
    "DataHoraFim": "2018-07-06T09:00:00-03:00",
    "Tempo": null,
    "QtdeHomens": null,
    "Intervalo": 0,
    "Funcionario": {
        "ID": 1369
    },
    "Final": false,
    "Usuario": "Apontamento API",
    "Refugos": {
        "$values": []
    },
    "OrigemApontamento": "API",
    "ApontamentoMaquina": {
        "Maquina": {
            "ID": 68
        }
    }

JSON Incluir Apontamento Tempo Total

JSON Incluir Apontamento Tempo Total
{
    "OrdemRoteiro": {
        "ID":333479
    },
    "Quantidade": 1,
    "DataApontamento": null,
    "TipoApontamento": {
        "ID": "TT"
    },
    "DataHoraInicio": null,
    "DataHoraFim": null,
    "Tempo": 1,
    "QtdeHomens": null,
    "Intervalo": 0,
    "Funcionario": {
        "ID": 1369
    },
    "Final": false,
    "Usuario": "Apontamento API",
    "Refugos": {
        "$values": []
    },
    "OrigemApontamento": "API",
    "ApontamentoMaquina": {
        "Maquina": {
            "ID": 68
        }
    }

JSON Incluir Apontamento com Refugo

JSON Incluir Apontamento com Refugo
{
    "OrdemRoteiro": {
        "ID":333479
    },
    "Quantidade": 0,
    "DataApontamento": null,
    "TipoApontamento": {
        "ID": "TT"
    },
    "DataHoraInicio": null,
    "DataHoraFim": null,
    "Tempo": 1,
    "QtdeHomens": null,
    "Intervalo": 0,
    "Funcionario": {
        "ID": 1369
    },
    "Final": false,
    "Usuario": "Apontamento API",
    "Refugos": {
        "$values": [
            {
                "Quantidade": 2,
                "Motivo": {
                    "ID": 8
                },
                "Causa": {
                    "ID": 1
                }
            }
        ]
    },
    "OrigemApontamento": "API",
    "ApontamentoMaquina": {
        "Maquina": {
            "ID": 68
        }
    }

JSON Incluir Apontamento com Ferramenta

JSON Incluir Apontamento com Ferramenta
{
    "OrdemRoteiro": {
        "ID":332945
    },
    "Quantidade": 1,
    "DataApontamento": "2018-07-06T11:01:14-03:00",
    "TipoApontamento": {
        "ID": "TP"
    },
    "DataHoraInicio": null,
    "DataHoraFim": null,
    "Tempo": null,
    "QtdeHomens": null,
    "Intervalo": 0,
    "Funcionario": {
        "ID": 1369
    },
    "Final": false,
    "Usuario": "Apontamento API",
    "Refugos": {
        "$values": []
    },
    "OrigemApontamento": "API",
    "ApontamentoMaquina": {
        "Maquina": {
            "ID": 68
        },
        "ApontamentoFerramentas": {
            "$values": [
                {
                    "Ferramenta":{
                        "ID": 70
                    }
                }
            ]
        }
    }
}

Excluir Apontamento

Excluir Apontamento

DELETE

~/api/Entities/Manufatura.Producao.Apontamento.ApontamentoProducao/{ID}

Header

Authorization

Bearer { token}

Content-Type

application/json

Retorno
{
    "ConcurrencyErrorOccurred": false,
    "Succeeded": false,
    "AnySucceeded": false,
    "Failed": true,
    "AllFailed": true,
    "BaseErrorMessage": null,
    "ErrorMessage": {mensagem do erro},
    "Exception": null
}

Retornar Lista de Motivos de Paradas de Máquina

Retornar Lista de Motivos de Paradas de Máquina

POST

~/api/Commands/Manufatura.Producao.CadastrosAuxiliares.GetMotivosApontParadaMaquina

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

skip

Quantidade de registros para “saltar”

take

Quantidade de registros que serão retornados

codigoMotivo

Código do motivo de parada para filtrar (ao informar o código do motivo, o ID da empresa também deverá ser informado)

empresaId

ID da empresa para filtrar os motivos de parada

{
 "skip": 0,
 "take": 50,
 "codigoMotivo": 100,
 "empresaId": 1
}
Retorno
{
    "$values": [
        {
            "Codigo": 100,
            "Descricao": "ABASTECIMENTO",
            "ID": 184
        }
    ]
}

Retornar Lista das Paradas de Máquina

Retornar Lista das Paradas de Máquina

POST

~/api/Commands/Manufatura.Producao.GetApontamentosParadaByMaquinaCommand

Header

Authorization

Bearer { token}

Content-Type

application/json

X-EMPR-ID

{ID da Empresa}

Body (JSON)

getOrdensRequest

"maquinaID": 100,
"skip": 0,
"take": 0,
Retorno
{
    "$values": [
        {
            "DataHoraInicio": "2018-07-17T08:00:00-03:00",
            "DataHoraFim": "2018-07-17T09:00:00-03:00",
            "Maquina": {
                "Codigo": "100",
                "Descricao": "APARELHO DE SOLDA  250A TCM 325",
                "Ativo": true,
                "Tipo": {
                    "ID": "M",
                    "Description": "Máquina"
                },
                "ID": 58
            },
            "Funcionario": {
                "Codigo": "1",
                "Nome": "FOCCO3I",
                "Ativo": true,
                "Funcoes": [
                    {
                        "ID": "CMPR",
                        "Description": "Comprador"
                    },
                    {
                        "ID": "DIRE",
                        "Description": "Diretor"
                    }
                ],
                "ID": 1369
            },
            "OrdemProducao": null,
            "OrdemRoteiro": null,
            "MotivoApontParadaMaquina": {
                "Codigo": 100,
                "Descricao": "ABASTECIMENTO",
                "ID": 184
            },
            "Tempo": 1,
            "ID": 164
        },
    ]
}

Inclusão de Parada de Máquina

Inclusão de Parada de Máquina

POST

~/api/Entities/Manufatura.Producao. ApontamentoParadaMaquina

Header

Authorization

Bearer { token}

Content-Type

application/json

Body
{
    "Empresa": {
        "ID":10
    },
    "DataHoraInicio": "2018-07-17T08:00:00-03:00",
    "DataHoraFim": "2018-07-17T09:00:00-03:00",
    "Maquina": {
        "ID": 58
    },
    "Funcionario": {
        "ID": 1369
    },
    "OrdemProducao": {
        "ID": 15442
    },
    "OrdemRoteiro": {
        "ID": 30587
    },
    "MotivoApontParadaMaquina": {
        "ID": 184
    }
}
Retorno
{
    "ConcurrencyErrorOccurred": false,
    "Succeeded": false,
    "AnySucceeded": false,
    "Failed": true,
    "AllFailed": true,
    "BaseErrorMessage": null,
    "ErrorMessage": {mensagem do erro},
    "Exception": null
}

Exclusão de Parada de Máquina

Exclusão de Parada de Máquina

DELETE

~/api/Entities/Manufatura.Producao. ApontamentoParadaMaquina/{ID}

Header

Authorization

Bearer { token}

Content-Type

application/json

Retorno
{
    "ConcurrencyErrorOccurred": false,
    "Succeeded": false,
    "AnySucceeded": false,
    "Failed": true,
    "AllFailed": true,
    "BaseErrorMessage": null,
    "ErrorMessage": {mensagem do erro},
    "Exception": null
}