mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-12-13 22:49:30 +00:00
Add a button to automatically add the ordered amount once delivered
This commit is contained in:
parent
b62d4aaeb7
commit
e6b1b533a8
5 changed files with 47 additions and 0 deletions
|
|
@ -135,6 +135,27 @@ class PartController extends AbstractController
|
|||
return $this->renderPartForm('edit', $request, $part);
|
||||
}
|
||||
|
||||
#[Route(path: '/{id}/delivered', name: 'part_delivered')]
|
||||
public function delivered(Part $part, Request $request): Response
|
||||
{
|
||||
$this->denyAccessUnlessGranted('edit', $part);
|
||||
|
||||
$partLot = $part->getPartLots()[0] ?? null;
|
||||
if (!$partLot instanceof PartLot) {
|
||||
$this->addFlash('error', 'part.delivered.error.no_lot');
|
||||
return $this->redirectToRoute('part_info', ['id' => $part->getID()]);
|
||||
}
|
||||
|
||||
$partLot->setAmount($partLot->getAmount() + $part->getOrderAmount());
|
||||
$part->setOrderAmount(0);
|
||||
$part->setOrderDelivery(null);
|
||||
|
||||
$this->em->persist($part);
|
||||
$this->em->flush();
|
||||
|
||||
return $this->redirectToRoute('part_info', ['id' => $part->getID()]);
|
||||
}
|
||||
|
||||
#[Route(path: '/{id}/delete', name: 'part_delete', methods: ['DELETE'])]
|
||||
public function delete(Request $request, Part $part): RedirectResponse
|
||||
{
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ class EntityURLGenerator
|
|||
'delete' => $this->deleteURL($entity),
|
||||
'file_download' => $this->downloadURL($entity),
|
||||
'file_view' => $this->viewURL($entity),
|
||||
'delivered' => $this->deliveredURL($entity),
|
||||
default => throw new InvalidArgumentException('Method is not supported!'),
|
||||
};
|
||||
}
|
||||
|
|
@ -169,6 +170,11 @@ class EntityURLGenerator
|
|||
throw new \RuntimeException('Attachment has no internal nor external path!');
|
||||
}
|
||||
|
||||
public function deliveredURL(Part $entity): string
|
||||
{
|
||||
return $this->urlGenerator->generate('part_delivered', ['id' => $entity->getID()]);
|
||||
}
|
||||
|
||||
public function downloadURL($entity): string
|
||||
{
|
||||
if (!($entity instanceof Attachment)) {
|
||||
|
|
|
|||
|
|
@ -39,6 +39,14 @@
|
|||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if is_granted('edit', part) %}
|
||||
<br>
|
||||
<a class="btn btn-info mt-2" href="{{ entity_url(part, 'delivered') }}">
|
||||
<i class="fas fa-cloud-arrow-down"></i>
|
||||
{% trans %}part.delivered.btn{% endtrans %}
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<form method="post" class="mt-2" action="{{ entity_url(part, 'delete') }}"
|
||||
{{ stimulus_controller('elements/delete_btn') }} {{ stimulus_action('elements/delete_btn', "submit", "submit") }}
|
||||
|
|
|
|||
|
|
@ -12022,6 +12022,12 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön
|
|||
<target>Bauteil aus Informationsquelle aktualisieren</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Bxk6TEx" name="part.delivered.btn">
|
||||
<segment state="translated">
|
||||
<source>part.delivered.btn</source>
|
||||
<target>Bestellte Menge wurde geliefert</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7pDRUQB" name="info_providers.update_part.title">
|
||||
<segment state="translated">
|
||||
<source>info_providers.update_part.title</source>
|
||||
|
|
|
|||
|
|
@ -12023,6 +12023,12 @@ Please note, that you can not impersonate a disabled user. If you try you will g
|
|||
<target>Update part from info providers</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="Bxk6TEx" name="part.delivered.btn">
|
||||
<segment state="translated">
|
||||
<source>part.delivered.btn</source>
|
||||
<target>Ordered amount has been delivered</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="7pDRUQB" name="info_providers.update_part.title">
|
||||
<segment state="translated">
|
||||
<source>info_providers.update_part.title</source>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue