inventory new from org
This commit is contained in:
parent
516e06b3df
commit
cb45928ebd
|
@ -88,6 +88,32 @@ class InventoryItemViewSet(viewsets.ModelViewSet):
|
||||||
if partner is not None:
|
if partner is not None:
|
||||||
queryset = queryset.filter(partner=partner)
|
queryset = queryset.filter(partner=partner)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
def create(self, request, **kwargs):
|
||||||
|
data = request.data
|
||||||
|
|
||||||
|
# check if partner exist
|
||||||
|
if Partner.objects.filter(external_id=data["partner"]).exists():
|
||||||
|
partner_object = Partner.objects.get(external_id=data["partner"])
|
||||||
|
else:
|
||||||
|
partner_object = Partner.objects.create(
|
||||||
|
external_id=data["partner"],
|
||||||
|
name=data["partner_name"],
|
||||||
|
)
|
||||||
|
partner_serializer = PartnerSerializer(partner_object, many=False)
|
||||||
|
|
||||||
|
inventory_object = InventoryItem.objects.create(
|
||||||
|
partner=partner_object,
|
||||||
|
name=f"{data['partner_name']} {datetime.datetime.now()}",
|
||||||
|
)
|
||||||
|
inventory_serializer = InventorySerializer(inventory_object, many=False)
|
||||||
|
|
||||||
|
return Response(
|
||||||
|
{
|
||||||
|
"partner": partner_serializer.data,
|
||||||
|
"inventory": inventory_serializer.data,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ElementViewSet(viewsets.ModelViewSet):
|
class ElementViewSet(viewsets.ModelViewSet):
|
||||||
|
|
|
@ -36,6 +36,11 @@ onMounted(async () => {
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<template #footer>
|
||||||
|
<UButton icon="i-heroicons-plus"
|
||||||
|
:to="`/organization/p_${route.params.org_id}/new`">
|
||||||
|
Новая инвентаризацию</UButton>
|
||||||
|
</template>
|
||||||
</UCard>
|
</UCard>
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<UTable :rows="inventory?.results" :columns="makeColumns(['id', 'name', 'created_at', 'total_elements',])">
|
<UTable :rows="inventory?.results" :columns="makeColumns(['id', 'name', 'created_at', 'total_elements',])">
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { apiBase, } from '~/helpers';
|
||||||
|
import type { ApiPartner } from '~/helpers';
|
||||||
|
|
||||||
|
const headers = new Headers();
|
||||||
|
headers.append("Content-Type", "application/json");
|
||||||
|
|
||||||
|
const route = useRoute()
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
const partner_data = await $fetch<ApiPartner>(`${apiBase}/partner/${route.params.org_id}`, { headers })
|
||||||
|
const prepader_data = {
|
||||||
|
partner: partner_data.external_id,
|
||||||
|
partner_name: partner_data.name,
|
||||||
|
}
|
||||||
|
const data = await $fetch(`${apiBase}/inventory/`, { method: 'POST', body: JSON.stringify(prepader_data) })
|
||||||
|
navigateTo(`/organization/p_${data.partner.id}/i_${data.inventory.id}/edit`)
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
Создается инвентаризация..
|
||||||
|
</template>
|
Loading…
Reference in New Issue