Nenhuma conta selecionada
Conecte uma conta Agriness para começar
Suínos ativos
{{ lotes.reduce((s, l) => s + (l.total_balance || 0), 0) || "—" }}
Lotes abertos
{{ lotes.length || "—" }}
Lote mais velho
{{ lotes.reduce((mx, l) => Math.max(mx, l.on_stage?.days_on_stage || 0), 0)
? lotes.reduce((mx, l) => Math.max(mx, l.on_stage?.days_on_stage || 0), 0) + ' dias'
: '—' }}
Lotes abertos
{{ lote.name }}
{{ lote.is_open ? 'Aberto' : 'Fechado' }}
{{ lote.total_balance ?? '—' }}
Animais
{{ lote.on_stage?.days_on_stage ?? '—' }}
Dias na fase
{{ lote.on_stage?.birthdate?.age ?? '—' }}
Idade (dias)
Nenhum lote aberto neste stage.
Ações disponíveis
{{ group[0].label }}
{{ group[0].desc }}
{{ group[1].label }}
{{ group[1].desc }}
Entrada Manual
{{ imp.optionsError.value }}
Animal inserido com sucesso!
{{ imp.singleError.value }}
{{ imp.step.value > n ? '✓' : n }}
{{ ['Parâmetros','Planilha','Mapeamento','Execução'][n-1] }}
Parâmetros da fazenda
{{ imp.optionsError.value }}
Upload da planilha
imp.uploadFile(e.dataTransfer.files[0])">
Arraste o arquivo Excel aqui ou
.xlsx ou .xls
Enviando...
{{ imp.uploadError.value }}
Mapeamento de colunas {{ imp.filename.value }} · {{ imp.totalRows.value }} linhas
Intervalo:
De
até
Campo
Modo
Valor fixo
Coluna da planilha
Campos principais
{{ f.label }}
Campos do animal (piglet)
{{ f.label }}
Execução
✓ {{ imp.nOk.value }}
✗ {{ imp.nFail.value }}
/ {{ imp.nTotal.value }}
{{ line }}
Aguardando início...
Inspeção Manual
Causa de reprovação *
{{ insp.selectedCause.value.name }}
{{ c.name }}
Inspeção registrada com sucesso!
{{ insp.singleError.value }}
{{ insp.candidatesTotal.value }} animais encontrados{{ insp.candidatesTotal.value > insp.candidates.value.length ? ' (exibindo os primeiros ' + insp.candidates.value.length + ')' : '' }} — selecione um:
{{ a.primary_identification }}
/ {{ a.secondary_identification }}
{{ insp.step.value > n ? '✓' : n }}
{{ ['Parâmetros','Planilha','Mapeamento','Execução'][n-1] }}
Parâmetros
Upload da planilha
insp.uploadFile(e.dataTransfer.files[0])">
Arraste o arquivo Excel aqui ou
.xlsx ou .xls
Enviando...
{{ insp.uploadError.value }}
Mapeamento de colunas {{ insp.filename.value }} · {{ insp.totalRows.value }} linhas
Intervalo:
De
até
Campo
Modo
Valor fixo
Coluna da planilha
{{ f.label }}
Execução
✓ {{ insp.nOk.value }}
✗ {{ insp.nFail.value }}
/ {{ insp.nTotal.value }}
Causas não encontradas no S4Farm — corrija antes de iniciar:
- {{ c }}
Verifique o nome exato no S4Farm (distinção entre maiúsculas/minúsculas não é exigida).
{{ line }}
Aguardando início...
Não Inspecionados
{{ insp.autoError.value }}
{{ insp.autoItems.value.length }} animal(is) não inspecionado(s)
(máx. 500 — refine as datas)
{{ insp.autoProgress.value.current }}/{{ insp.autoProgress.value.total }} inspecionados
{{ insp.autoInspectResult.value.nOk }} inspeção(ões) registrada(s) com sucesso!
{{ insp.autoInspectResult.value.nFail }} falha(s):
- {{ e }}
| ID Primária | Lote | Stage | Nascimento | |
|---|---|---|---|---|
| {{ item.primary_identification || '—' }} | {{ item.animal_group?.name || '—' }} | {{ item.stage?.name || '—' }} | {{ item.birthdate || '—' }} |
Nenhum animal sem inspeção no período selecionado.
Venda Manual
Venda registrada com sucesso!
{{ sell.singleError.value }}
{{ sell.candidatesTotal.value }} animais encontrados{{ sell.candidatesTotal.value > sell.candidates.value.length ? ' (exibindo os primeiros ' + sell.candidates.value.length + ')' : '' }} — selecione um:
{{ a.primary_identification }}
/ {{ a.secondary_identification }}
{{ sell.step.value > n ? '✓' : n }}
{{ ['Parâmetros','Planilha','Mapeamento','Execução'][n-1] }}
Parâmetros
Planilha
Arraste o arquivo Excel aqui
.xlsx ou .xls
Enviando...
{{ sell.uploadError.value }}
Mapeamento de colunas {{ sell.filename.value }} · {{ sell.totalRows.value }} linhas
Intervalo:
De
até
Campo
Modo
Valor fixo
Coluna da planilha
{{ f.label }}
Execução
✓ {{ sell.nOk.value }}
✗ {{ sell.nFail.value }}
/ {{ sell.nTotal.value }}
{{ line }}
Log de execução aparece aqui.
Lançamento de Morte Manual
Morte registrada com sucesso!
{{ deat.singleError.value }}
{{ deat.candidatesTotal.value }} animais encontrados{{ deat.candidatesTotal.value > deat.candidates.value.length ? ' (exibindo os primeiros ' + deat.candidates.value.length + ')' : '' }} — selecione um:
{{ a.primary_identification }}
/ {{ a.secondary_identification }}
{{ deat.step.value > n ? '✓' : n }}
{{ ['Parâmetros','Planilha','Mapeamento','Execução'][n-1] }}
Parâmetros
Planilha
Arraste o arquivo Excel aqui
.xlsx ou .xls
Enviando...
{{ deat.uploadError.value }}
Mapeamento de colunas {{ deat.filename.value }} · {{ deat.totalRows.value }} linhas
Intervalo:
De
até
Campo
Modo
Valor fixo
Coluna da planilha
{{ f.label }}
Execução
✓ {{ deat.nOk.value }}
✗ {{ deat.nFail.value }}
/ {{ deat.nTotal.value }}
{{ line }}
Log de execução aparece aqui.
Apagar Inspeções
{{ del_ins.searchError.value }}
{{ del_ins.filteredItems.value.length }} inspeção(ões) encontrada(s)
{{ del_ins.deleteProgress.value.current }}/{{ del_ins.deleteProgress.value.total }} apagados
{{ del_ins.deleteResult.value.nOk }} excluído(s) com sucesso.
{{ del_ins.deleteResult.value.nFail }} falha(s):
- {{ e }}
| ID Primária | Data | Status | Causa | Lote | |
|---|---|---|---|---|---|
| {{ item.piglet?.primary_identification ?? '—' }} | {{ item.event_date }} | {{ del_ins.statusLabel(item.inspection_status) }} | {{ item.cause_name || '—' }} | {{ item.detail?.animal_group?.name ?? '—' }} |
Nenhuma inspeção encontrada para os filtros selecionados.
Apagar Importações (Compras)
{{ del_imp.searchError.value }}
{{ del_imp.items.value.length }} compra(s) exibida(s)
(total {{ del_imp.totalCount.value }} — refine as datas para ver menos)
{{ del_imp.deleteProgress.value.current }}/{{ del_imp.deleteProgress.value.total }} apagados
{{ del_imp.deleteResult.value.nOk }} excluído(s) com sucesso.
{{ del_imp.deleteResult.value.nFail }} falha(s):
- {{ e }}
| ID Primária | Data | Lote | Local | Qtd | Peso (kg) | |
|---|---|---|---|---|---|---|
| {{ item.piglet?.primary_identification ?? '—' }} | {{ item.event_date }} | {{ item.animal_group?.name ?? '—' }} | {{ item.location?.name ?? '—' }} | {{ item.animal_number }} | {{ item.weight != null ? item.weight.toFixed(1) : '—' }} |
Nenhuma compra encontrada para os filtros selecionados.
{{ ACTIONS.find(a => a.id === currentAction)?.label }}
Ação destrutiva — em construção.
Precisará de: capturar HAR da exclusão no S4Farm → implementar endpoint DELETE no backend. Ação ainda não implementada.
Precisará de: capturar HAR da exclusão no S4Farm → implementar endpoint DELETE no backend. Ação ainda não implementada.
→ frontend/js/{{ currentAction }}.js