Löschen von Kunden

This commit is contained in:
Thomas Peterson 2026-03-20 14:41:46 +01:00
parent a22df31b30
commit 5516913cc0
21 changed files with 367 additions and 88 deletions

View File

@ -21,7 +21,7 @@
{% block body %} {% block body %}
<div class="flex flex-col gap-6"> <div class="flex flex-col gap-6">
<div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-sm border bg-white px-6 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="mb-6 px-7"> <div class="mb-6 px-7">
<h4 class="text-lg font-semibold text-gray-900 mb-4">{{ 'psc_shop_cms.Site'|trans }} {{ 'psc_shop_cms.Delete'|trans }}?</h4> <h4 class="text-lg font-semibold text-gray-900 mb-4">{{ 'psc_shop_cms.Site'|trans }} {{ 'psc_shop_cms.Delete'|trans }}?</h4>
<div class="bg-yellow-50 border-l-4 border-yellow-400 p-4 mb-6"> <div class="bg-yellow-50 border-l-4 border-yellow-400 p-4 mb-6">

View File

@ -13,11 +13,11 @@ use PSC\Shop\OrderBundle\Form\Backend\Upload\DeleteType;
use PSC\System\SettingsBundle\Document\LogEntry; use PSC\System\SettingsBundle\Document\LogEntry;
use PSC\System\SettingsBundle\Service\History; use PSC\System\SettingsBundle\Service\History;
use PSC\System\SettingsBundle\Service\Log; use PSC\System\SettingsBundle\Service\Log;
use Symfony\Bridge\Twig\Attribute\Template;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
use Symfony\Bridge\Twig\Attribute\Template;
use Symfony\Component\HttpFoundation\Request;
class AddressDetailController extends AbstractController class AddressDetailController extends AbstractController
{ {
@ -26,6 +26,7 @@ class AddressDetailController extends AbstractController
*/ */
private Log $logService; private Log $logService;
private History $historyService; private History $historyService;
public function __construct(Log $logService, History $historyService) public function __construct(Log $logService, History $historyService)
{ {
$this->logService = $logService; $this->logService = $logService;
@ -51,7 +52,7 @@ class AddressDetailController extends AbstractController
DocumentManager $documentManager, DocumentManager $documentManager,
SessionInterface $session, SessionInterface $session,
\PSC\System\SettingsBundle\Service\Shop $shopService, \PSC\System\SettingsBundle\Service\Shop $shopService,
$uuid = "" $uuid = '',
) { ) {
/** @var ContactAddress $contact */ /** @var ContactAddress $contact */
$contactAddress = $entityManager $contactAddress = $entityManager
@ -77,7 +78,7 @@ class AddressDetailController extends AbstractController
} elseif (!$contactAddressDoc) { } elseif (!$contactAddressDoc) {
if (!$contactDoc) { if (!$contactDoc) {
$contactDoc = new \PSC\Shop\EntityBundle\Document\Contact(); $contactDoc = new \PSC\Shop\EntityBundle\Document\Contact();
$contactDoc->setKundenNr(""); $contactDoc->setKundenNr('');
$contactDoc->setUid($contact->getId()); $contactDoc->setUid($contact->getId());
$documentManager->persist($contactDoc); $documentManager->persist($contactDoc);
} }
@ -99,13 +100,25 @@ class AddressDetailController extends AbstractController
$contactAddressDoc->setHomepage($contactAddress->getHomepage()); $contactAddressDoc->setHomepage($contactAddress->getHomepage());
$contactAddressDoc->setSteuerId($contactAddress->getSteuerId()); $contactAddressDoc->setSteuerId($contactAddress->getSteuerId());
$contactAddressDoc->setLId($contactAddress->getLId()); $contactAddressDoc->setLId($contactAddress->getLId());
$this->historyService->createHistoryEntry(new PSCHistory((string)$contactAddress->getUid()), $contactAddress, $contactAddressDoc); $this->historyService->createHistoryEntry(
new PSCHistory((string) $contactAddress->getUid()),
$contactAddress,
$contactAddressDoc,
);
$entityManager->persist($contactAddress); $entityManager->persist($contactAddress);
$entityManager->flush(); $entityManager->flush();
$documentManager->persist($contactAddressDoc); $documentManager->persist($contactAddressDoc);
$documentManager->flush(); $documentManager->flush();
$session->getFlashBag()->add('success', 'Address has been updated!'); $session->getFlashBag()->add('success', 'Address has been updated!');
$this->logService->createLogEntry($selectedShop, $this->getUser(), LogEntry::INFO, PSCShopContactBundle::class, $contactAddress->getUuid(), "Address has been updated", ['contact' => $contact->getEmail()]); $this->logService->createLogEntry(
$selectedShop,
$this->getUser(),
LogEntry::INFO,
PSCShopContactBundle::class,
$contactAddress->getUuid(),
'Address has been updated',
['contact' => $contact->getEmail()],
);
return $this->redirectToRoute('psc_shop_contact_backend_edit', array('uuid' => $contact->getUuid())); return $this->redirectToRoute('psc_shop_contact_backend_edit', array('uuid' => $contact->getUuid()));
} }
@ -113,7 +126,7 @@ class AddressDetailController extends AbstractController
'form' => $form->createView(), 'form' => $form->createView(),
'contact' => $contact, 'contact' => $contact,
'contactAddress' => $contactAddress, 'contactAddress' => $contactAddress,
'changes' => $this->historyService->getHistory(new PSCHistory(), (string)$contactAddress->getUid()) 'changes' => $this->historyService->getHistory(new PSCHistory(), (string) $contactAddress->getUid()),
); );
} }
@ -136,9 +149,8 @@ class AddressDetailController extends AbstractController
DocumentManager $documentManager, DocumentManager $documentManager,
SessionInterface $session, SessionInterface $session,
\PSC\System\SettingsBundle\Service\Shop $shopService, \PSC\System\SettingsBundle\Service\Shop $shopService,
$contactUUID = "" $contactUUID = '',
) { ) {
/** @var Contact $contact */ /** @var Contact $contact */
$contact = $entityManager $contact = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Contact') ->getRepository('PSC\Shop\EntityBundle\Entity\Contact')
@ -168,15 +180,22 @@ class AddressDetailController extends AbstractController
$documentManager->persist($contactAddressDoc); $documentManager->persist($contactAddressDoc);
$documentManager->flush(); $documentManager->flush();
$session->getFlashBag()->add('success', 'Address has been created!'); $session->getFlashBag()->add('success', 'Address has been created!');
$this->logService->createLogEntry($selectedShop, $this->getUser(), LogEntry::INFO, PSCShopContactBundle::class, $contactAddress->getUuid(), "Address has been created", ['contact' => $contact->getEmail()]); $this->logService->createLogEntry(
$selectedShop,
$this->getUser(),
LogEntry::INFO,
PSCShopContactBundle::class,
$contactAddress->getUuid(),
'Address has been created',
['contact' => $contact->getEmail()],
);
return $this->redirectToRoute('psc_shop_contact_backend_edit', array('uuid' => $contact->getUuid())); return $this->redirectToRoute('psc_shop_contact_backend_edit', array('uuid' => $contact->getUuid()));
} }
return array( return array(
'form' => $form->createView(), 'form' => $form->createView(),
'contact' => $contact, 'contact' => $contact,
'contactAddress' => $contactAddress 'contactAddress' => $contactAddress,
); );
} }
@ -191,7 +210,7 @@ class AddressDetailController extends AbstractController
* @return array|\Symfony\Component\HttpFoundation\RedirectResponse * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
* @throws \Doctrine\ODM\MongoDB\MongoDBException * @throws \Doctrine\ODM\MongoDB\MongoDBException
*/ */
#[Route(path: '/edit/delete/{uuid}', name: 'psc_shop_contact_backend_address_detail_delete')] #[Route(path: '/addressdetail/delete/{uuid}', name: 'psc_shop_contact_backend_address_detail_delete')]
#[Template('@PSCShopContact/backend/addressdetail/delete.html.twig')] #[Template('@PSCShopContact/backend/addressdetail/delete.html.twig')]
public function deleteAction( public function deleteAction(
Request $request, Request $request,
@ -199,9 +218,8 @@ class AddressDetailController extends AbstractController
DocumentManager $documentManager, DocumentManager $documentManager,
SessionInterface $session, SessionInterface $session,
\PSC\System\SettingsBundle\Service\Shop $shopService, \PSC\System\SettingsBundle\Service\Shop $shopService,
$uuid $uuid,
) { ) {
/** @var ContactAddress $contactAddress */ /** @var ContactAddress $contactAddress */
$contactAddress = $entityManager $contactAddress = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\ContactAddress') ->getRepository('PSC\Shop\EntityBundle\Entity\ContactAddress')
@ -226,17 +244,24 @@ class AddressDetailController extends AbstractController
} }
$session->getFlashBag()->add('success', 'Address has been deleted!'); $session->getFlashBag()->add('success', 'Address has been deleted!');
$this->logService->createLogEntry($selectedShop, $this->getUser(), LogEntry::INFO, PSCShopContactBundle::class, $uuid, "Address has been deleted", ['contact' => $email]); $this->logService->createLogEntry(
$selectedShop,
$this->getUser(),
LogEntry::INFO,
PSCShopContactBundle::class,
$uuid,
'Address has been deleted',
['contact' => $email],
);
return $this->redirectToRoute('psc_shop_contact_backend_edit', array('uuid' => $uuid)); return $this->redirectToRoute('psc_shop_contact_backend_edit', array('uuid' => $uuid));
} }
return $this->redirectToRoute('psc_shop_contact_backend_edit', array('uuid' => $uuid)); return $this->redirectToRoute('psc_shop_contact_backend_edit', array('uuid' => $uuid));
} }
return array( return array(
'address' => $contactAddress, 'address' => $contactAddress,
'contact' => $contactAddress->getContact(), 'contact' => $contactAddress->getContact(),
'form' => $form->createView() 'form' => $form->createView(),
); );
} }
} }

View File

@ -557,6 +557,95 @@ class EditController extends AbstractController
); );
} }
#[Route(path: '/edit/delete/{uuid}', name: 'psc_shop_contact_backend_delete')]
#[Template('@PSCShopContact/backend/edit/delete.html.twig')]
public function deleteAction(
Request $request,
\PSC\System\SettingsBundle\Service\Shop $shopService,
EntityManagerInterface $entityManager,
DocumentManager $documentManager,
SessionInterface $session,
$uuid = ""
) {
/** @var Contact $contact */
$contact = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\Contact')
->findOneBy(array('uuid' => $uuid));
/** @var \PSC\Shop\EntityBundle\Entity\Shop $selectedShop */
$selectedShop = $shopService->getSelectedShop();
// Check if orders exist for this contact
$orderCount = $entityManager->getRepository('PSC\Shop\EntityBundle\Entity\Order')
->createQueryBuilder('o')
->select('count(o.uid)')
->leftJoin('o.contact', 'c')
->andWhere('c.uid = :contact_id')
->setParameter('contact_id', $contact->getUid())
->getQuery()
->getSingleScalarResult();
$hasOrders = (int)$orderCount > 0;
$form = $this->createForm(AnonymType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if (!$hasOrders && $form->getClickedButton()->getName() == 'yes') {
$email = $contact->getEmail();
// Remove contact addresses
$contactAddresses = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\ContactAddress')
->findBy(array('contact' => $contact));
foreach ($contactAddresses as $contactAddress) {
$contactAddressDoc = $documentManager
->getRepository('PSC\Shop\EntityBundle\Document\ContactAddress')
->findOneBy(array('uid' => (string)$contactAddress->getUid()));
$entityManager->remove($contactAddress);
if ($contactAddressDoc) {
$documentManager->remove($contactAddressDoc);
}
}
// Remove shop contacts
$shopContacts = $entityManager
->getRepository('PSC\Shop\EntityBundle\Entity\ShopContact')
->findBy(array('contact' => $contact));
foreach ($shopContacts as $shopContact) {
$entityManager->remove($shopContact);
}
// Remove MongoDB document
$contactDoc = $documentManager
->getRepository('PSC\Shop\EntityBundle\Document\Contact')
->findOneBy(array('uid' => (string)$contact->getId()));
$entityManager->remove($contact);
$entityManager->flush();
if ($contactDoc) {
$documentManager->remove($contactDoc);
$documentManager->flush();
}
$session->getFlashBag()->add('success', 'Contact \'' . $email . '\' has been deleted!');
$this->logService->createLogEntry($selectedShop, $this->getUser(), LogEntry::INFO, PSCShopContactBundle::class, $email, "Contact deleted");
}
return $this->redirectToRoute('psc_shop_contact_backend_list');
}
return array(
'contact' => $contact,
'form' => $form->createView(),
'hasOrders' => $hasOrders,
'orderCount' => (int)$orderCount,
);
}
/** /**
* @param array... $arrayCollections * @param array... $arrayCollections
* @return ArrayCollection * @return ArrayCollection

View File

@ -0,0 +1,9 @@
customers: Kunden
delete: Löschen
deleteCustomer: Kunde löschen
Doyoureally: Sind Sie sicher, dass Sie diesen Kunden löschen möchten?
hasOrders: Dieser Kunde kann nicht gelöscht werden, da noch %count% Aufträge vorhanden sind.
cannotBeUndone: Diese Aktion kann nicht rückgängig gemacht werden
back: Zurück
yes: Ja
no: Nein

View File

@ -0,0 +1,9 @@
customers: Customer
delete: Delete
deleteCustomer: Delete customer
Doyoureally: Are you sure you want to delete this customer?
hasOrders: This customer cannot be deleted because there are still %count% orders.
cannotBeUndone: This action cannot be undone
back: Back
yes: Yes
no: No

View File

@ -61,6 +61,7 @@ Extended: Erweitert
Save: Speichern Save: Speichern
Anonymize: Anonymisieren Anonymize: Anonymisieren
delete: Löschen
back: Zurück back: Zurück
Address: Adressen Address: Adressen

View File

@ -55,6 +55,7 @@ Extended: Extended
Save: Save Save: Save
Anonymize: Anonymize Anonymize: Anonymize
delete: Delete
back: Back back: Back
Address: Address Address: Address

View File

@ -14,5 +14,6 @@ virtual: Gast
yes: Ja yes: Ja
no: Nein no: Nein
edit: Bearbeiten edit: Bearbeiten
delete: Löschen
Loginname: Login/Email Loginname: Login/Email
shops: Weitere Shops shops: Weitere Shops

View File

@ -14,5 +14,6 @@ virtual: Guest
yes: Yes yes: Yes
no: No no: No
edit: To Edit edit: To Edit
delete: Delete
Loginname: Login/Email Loginname: Login/Email
shops: Shops shops: Shops

View File

@ -0,0 +1,108 @@
{% extends 'backend_tailwind_base.html.twig' %}
{% form_theme form 'form_div_layout_tailwind.html.twig' %}
{% trans_default_domain 'core_contact_delete_contact' %}
{% block header %}
<div>
<h1 class="text-psc text-2xl font-medium flex flex-row gap-1">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-8">
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z" />
</svg>
{{'customers'|trans}} <span class="text-gray-500">{{'delete'|trans}}</span>
</h1>
</div>
<div class="flex flex-wrap items-center gap-4 justify-start shrink-0">
<a href="{{ path("psc_shop_contact_backend_edit", {uuid: contact.uuid}) }}" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-md px-4 text-sm text-white shadow-lg bg-gray-500 hover:bg-gray-600 hover:ring-2 hover:ring-gray-500 hover:ring-offset-2 min-h-[2.25rem]">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="button-icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18" />
</svg>
{{'back'|trans}}
</a>
</div>
{% endblock %}
{% block body %}
<div class="flex flex-col gap-6">
{# Delete Confirmation Card #}
<div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark">
{# Card Header #}
<div class="border-b border-red-200 bg-red-50 px-6 py-4 dark:border-strokedark dark:bg-red-900/20">
<div class="flex items-center gap-3">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-600">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" />
</svg>
<h3 class="text-xl font-medium text-red-900 dark:text-red-200">
{{'deleteCustomer'|trans}}?
</h3>
</div>
</div>
{# Card Body #}
<div class="px-6 py-6">
<div class="space-y-4">
{% if hasOrders %}
<div class="p-4 bg-red-50 rounded-md border border-red-200 dark:bg-red-900/30 dark:border-red-800">
<div class="flex gap-3">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 text-red-600 flex-shrink-0 mt-0.5">
<path stroke-linecap="round" stroke-linejoin="round" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636" />
</svg>
<p class="text-sm text-red-800 dark:text-red-200">
{{ 'hasOrders'|trans({'%count%': orderCount}) }}
</p>
</div>
</div>
{% else %}
<p class="text-gray-700 dark:text-bodydark">
{{'Doyoureally'|trans}}
</p>
{% endif %}
<div class="p-4 bg-gray-50 rounded-md border border-gray-200 dark:bg-boxdark-2 dark:border-strokedark">
<h5 class="text-lg font-medium text-gray-900 dark:text-bodydark">
{{ contact.username }}
</h5>
</div>
{% if not hasOrders %}
<div class="p-4 bg-yellow-50 rounded-md border border-yellow-200">
<div class="flex gap-3">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 text-yellow-600 flex-shrink-0 mt-0.5">
<path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" />
</svg>
<p class="text-sm text-yellow-800">
{{'cannotBeUndone'|trans}}.
</p>
</div>
</div>
{% endif %}
</div>
</div>
{# Card Footer with Actions #}
{% if not hasOrders %}
<div class="border-t border-gray-200 px-6 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2">
{{ form_start(form) }}
<div class="flex flex-wrap items-center gap-3 justify-end">
{{ form_widget(form.no, {
attr: {
class: 'inline-flex items-center justify-center py-2 gap-2 font-medium rounded-md px-4 text-sm text-psc-600 border border-psc-500 bg-white hover:bg-gray-50 hover:ring-2 hover:ring-psc-500 hover:ring-offset-1 shadow-sm'
},
label: 'no'|trans
}) }}
{{ form_widget(form.yes, {
attr: {
class: 'inline-flex items-center justify-center py-2 gap-2 font-medium rounded-md px-4 text-sm text-white shadow-lg bg-red-500 hover:bg-red-600 hover:ring-2 hover:ring-red-500 hover:ring-offset-1'
},
label: 'yes'|trans
}) }}
</div>
{{ form_end(form) }}
</div>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -21,6 +21,7 @@
</h3> </h3>
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-end"> <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-end">
<a href="{{ path("psc_shop_contact_backend_delete", {uuid: contact.uuid}) }}" class="btn btn-danger btn-sm"><i class="fa fa-lg fa-fw fa-trash"></i> {{ 'customer'|trans }} {{ 'delete'|trans }}</a>
<a href="{{ path("psc_shop_contact_backend_edit_anonymisieren", {uuid: contact.uuid}) }}" class="btn btn-default btn-sm"><i class="fa fa-lg fa-fw fa-building"></i> {{ 'customer'|trans }} {{ 'Anonymize'|trans }}</a> <a href="{{ path("psc_shop_contact_backend_edit_anonymisieren", {uuid: contact.uuid}) }}" class="btn btn-default btn-sm"><i class="fa fa-lg fa-fw fa-building"></i> {{ 'customer'|trans }} {{ 'Anonymize'|trans }}</a>
<a href="{{ path("psc_shop_contact_backend_list") }}" class="btn btn-default btn-sm"><i class="fa fa-lg fa-fw fa-arrow-left"></i> {{ 'back'|trans }}</a> <a href="{{ path("psc_shop_contact_backend_list") }}" class="btn btn-default btn-sm"><i class="fa fa-lg fa-fw fa-arrow-left"></i> {{ 'back'|trans }}</a>
</div> </div>

View File

@ -125,6 +125,11 @@
<path stroke-linecap="round" stroke-linejoin="round" d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10" /> <path stroke-linecap="round" stroke-linejoin="round" d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10" />
</svg> </svg>
</a> </a>
<a href="{{ path("psc_shop_contact_backend_delete", {uuid: contact.uuid}) }}" title="{{'delete'|trans}}">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon text-red-600 hover:text-red-700 dark:text-red-500 dark:hover:text-red-400">
<path stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" />
</svg>
</a>
</div> </div>
</td> </td>
</tr> </tr>

View File

@ -22,7 +22,7 @@
{% block body %} {% block body %}
<div class="flex flex-col gap-6"> <div class="flex flex-col gap-6">
<div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-sm border bg-white px-6 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="mb-6 px-7"> <div class="mb-6 px-7">
<h4 class="text-lg font-semibold text-gray-900 mb-4">{{'News'|trans}} {{'del'|trans}}?</h4> <h4 class="text-lg font-semibold text-gray-900 mb-4">{{'News'|trans}} {{'del'|trans}}?</h4>
<div class="bg-yellow-50 border-l-4 border-yellow-400 p-4 mb-6"> <div class="bg-yellow-50 border-l-4 border-yellow-400 p-4 mb-6">

View File

@ -28,7 +28,7 @@
<div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark">
{# Card Header #} {# Card Header #}
<div class="border-b border-red-200 bg-red-50 px-7.5 py-4 dark:border-strokedark dark:bg-red-900/20"> <div class="border-b border-red-200 bg-red-50 px-6 py-4 dark:border-strokedark dark:bg-red-900/20">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-600"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-600">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" />
@ -40,7 +40,7 @@
</div> </div>
{# Card Body #} {# Card Body #}
<div class="px-7.5 py-6"> <div class="px-6 py-6">
<div class="space-y-4"> <div class="space-y-4">
<p class="text-gray-700 dark:text-bodydark"> <p class="text-gray-700 dark:text-bodydark">
{{'Are you sure you want to delete this payment method'|trans}}? {{'Are you sure you want to delete this payment method'|trans}}?
@ -66,7 +66,7 @@
</div> </div>
{# Card Footer with Actions #} {# Card Footer with Actions #}
<div class="border-t border-gray-200 px-7.5 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2"> <div class="border-t border-gray-200 px-6 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2">
{{ form_start(form) }} {{ form_start(form) }}
<div class="flex flex-wrap items-center gap-3 justify-end"> <div class="flex flex-wrap items-center gap-3 justify-end">
{{ form_widget(form.no, { {{ form_widget(form.no, {

View File

@ -28,7 +28,7 @@
<div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark">
{# Card Header #} {# Card Header #}
<div class="border-b border-red-200 bg-red-50 px-7.5 py-4 dark:border-strokedark dark:bg-red-900/20"> <div class="border-b border-red-200 bg-red-50 px-6 py-4 dark:border-strokedark dark:bg-red-900/20">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-600"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-600">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" />
@ -40,7 +40,7 @@
</div> </div>
{# Card Body #} {# Card Body #}
<div class="px-7.5 py-6"> <div class="px-6 py-6">
<div class="space-y-4"> <div class="space-y-4">
<p class="text-gray-700 dark:text-bodydark"> <p class="text-gray-700 dark:text-bodydark">
{{'Are you sure you want to delete this shipping method'|trans}}? {{'Are you sure you want to delete this shipping method'|trans}}?
@ -66,7 +66,7 @@
</div> </div>
{# Card Footer with Actions #} {# Card Footer with Actions #}
<div class="border-t border-gray-200 px-7.5 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2"> <div class="border-t border-gray-200 px-6 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2">
{{ form_start(form) }} {{ form_start(form) }}
<div class="flex flex-wrap items-center gap-3 justify-end"> <div class="flex flex-wrap items-center gap-3 justify-end">
{{ form_widget(form.no, { {{ form_widget(form.no, {

View File

@ -27,7 +27,7 @@
{{ form_start(form, { 'attr': {'class': ''}}) }} {{ form_start(form, { 'attr': {'class': ''}}) }}
<div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark">
{# Card Header #} {# Card Header #}
<div class="border-b border-red-200 bg-red-50 px-7.5 py-4 dark:border-strokedark dark:bg-red-900/20"> <div class="border-b border-red-200 bg-red-50 px-6 py-4 dark:border-strokedark dark:bg-red-900/20">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<svg class="w-6 h-6 text-red-600 dark:text-red-500" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> <svg class="w-6 h-6 text-red-600 dark:text-red-500" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" />
@ -39,7 +39,7 @@
</div> </div>
{# Card Body #} {# Card Body #}
<div class="px-7.5 py-6"> <div class="px-6 py-6">
<div class="p-4 bg-yellow-50 rounded-md border border-yellow-200 mb-4"> <div class="p-4 bg-yellow-50 rounded-md border border-yellow-200 mb-4">
<div class="flex gap-3"> <div class="flex gap-3">
<svg class="w-5 h-5 text-yellow-600 flex-shrink-0 mt-0.5" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> <svg class="w-5 h-5 text-yellow-600 flex-shrink-0 mt-0.5" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
@ -62,7 +62,7 @@
</div> </div>
{# Card Footer #} {# Card Footer #}
<div class="border-t border-gray-200 px-7.5 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2"> <div class="border-t border-gray-200 px-6 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2">
<div class="flex justify-end gap-3"> <div class="flex justify-end gap-3">
{{ form_widget(form.no, { {{ form_widget(form.no, {
attr: { attr: {

View File

@ -23,7 +23,7 @@
{% block body %} {% block body %}
<div class="flex flex-col gap-6"> <div class="flex flex-col gap-6">
<div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="border-b border-red-200 bg-red-50 px-7.5 py-4 dark:border-strokedark dark:bg-red-900/20"> <div class="border-b border-red-200 bg-red-50 px-6 py-4 dark:border-strokedark dark:bg-red-900/20">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-600"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-600">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" />
@ -32,7 +32,7 @@
</div> </div>
</div> </div>
<div class="px-7.5 py-6"> <div class="px-6 py-6">
<p class="text-gray-700 dark:text-bodydark"> <p class="text-gray-700 dark:text-bodydark">
Soll der ausgewählte Hilfetext wirklich gelöscht werden? Soll der ausgewählte Hilfetext wirklich gelöscht werden?
</p> </p>
@ -55,7 +55,7 @@
</div> </div>
</div> </div>
<div class="border-t border-gray-200 px-7.5 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2"> <div class="border-t border-gray-200 px-6 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2">
{{ form_start(form) }} {{ form_start(form) }}
<div class="flex flex-wrap items-center gap-3 justify-end"> <div class="flex flex-wrap items-center gap-3 justify-end">
{{ form_widget(form.no, { {{ form_widget(form.no, {

View File

@ -21,7 +21,7 @@
{% block body %} {% block body %}
<div class="flex flex-col gap-6"> <div class="flex flex-col gap-6">
<div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-sm border bg-white px-6 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="mb-6 px-7"> <div class="mb-6 px-7">
<h4 class="text-lg font-semibold text-gray-900 mb-4">Papier löschen?</h4> <h4 class="text-lg font-semibold text-gray-900 mb-4">Papier löschen?</h4>
<div class="bg-yellow-50 border-l-4 border-yellow-400 p-4 mb-6"> <div class="bg-yellow-50 border-l-4 border-yellow-400 p-4 mb-6">

View File

@ -1,4 +1,5 @@
{% extends 'backend_tailwind_base.html.twig' %} {% extends 'backend_tailwind_base.html.twig' %}
{% form_theme form 'form_div_layout_tailwind.html.twig' %}
{% block header %} {% block header %}
<div> <div>
@ -10,7 +11,7 @@
</h1> </h1>
</div> </div>
<div class="flex flex-wrap items-center gap-4 justify-start shrink-0"> <div class="flex flex-wrap items-center gap-4 justify-start shrink-0">
<a href="{{ path("psc_system_status_list") }}" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-sm px-4 text-sm text-white shadow-lg bg-psc-500 hover:bg-psc-600 hover:ring-2 hover:ring-psc-500 hover:ring-offset-2 min-h-[2.25rem]"> <a href="{{ path("psc_system_status_list") }}" class="inline-flex items-center justify-center py-1 gap-1 font-medium rounded-md px-4 text-sm text-white shadow-lg bg-gray-500 hover:bg-gray-600 hover:ring-2 hover:ring-gray-500 hover:ring-offset-2 min-h-[2.25rem]">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="button-icon"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="button-icon">
<path stroke-linecap="round" stroke-linejoin="round" d="M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18" /> <path stroke-linecap="round" stroke-linejoin="round" d="M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18" />
</svg> </svg>
@ -21,45 +22,69 @@
{% block body %} {% block body %}
<div class="flex flex-col gap-6"> <div class="flex flex-col gap-6">
<div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="mb-6 px-7"> {# Delete Confirmation Card #}
<h4 class="text-lg font-semibold text-gray-900 mb-4">Status löschen?</h4> <div class="rounded-md border border-red-200 bg-white shadow-lg dark:border-strokedark dark:bg-boxdark">
<div class="bg-yellow-50 border-l-4 border-yellow-400 p-4 mb-6">
<div class="flex"> {# Card Header #}
<div class="flex-shrink-0"> <div class="border-b border-red-200 bg-red-50 px-6 py-4 dark:border-strokedark dark:bg-red-900/20">
<svg class="h-5 w-5 text-yellow-400" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor"> <div class="flex items-center gap-3">
<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd" /> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-red-600">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" />
</svg> </svg>
<h3 class="text-xl font-medium text-red-900 dark:text-red-200">
Status löschen?
</h3>
</div> </div>
<div class="ml-3"> </div>
<p class="text-sm text-yellow-700 font-medium">
{# Card Body #}
<div class="px-6 py-6">
<div class="space-y-4">
<p class="text-gray-700 dark:text-bodydark">
Sind Sie sicher, dass Sie diesen Status löschen möchten?
</p>
<div class="p-4 bg-gray-50 rounded-md border border-gray-200 dark:bg-boxdark-2 dark:border-strokedark">
<h5 class="text-lg font-medium text-gray-900 dark:text-bodydark">
{{ status.internalName }} {{ status.internalName }}
</h5>
</div>
<div class="p-4 bg-yellow-50 rounded-md border border-yellow-200">
<div class="flex gap-3">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 text-yellow-600 flex-shrink-0 mt-0.5">
<path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" />
</svg>
<p class="text-sm text-yellow-800">
Diese Aktion kann nicht rückgängig gemacht werden.
</p> </p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{ form_start(form, {attr: {class: ''}}) }} {# Card Footer with Actions #}
<div class="flex gap-4 px-7 items-center"> <div class="border-t border-gray-200 px-6 py-4 bg-gray-50 dark:border-strokedark dark:bg-boxdark-2">
<button type="submit" name="{{ form.yes.vars.full_name }}" value="1" class="inline-flex items-center justify-center py-2 gap-1 font-medium rounded-sm px-6 text-sm text-white shadow-lg bg-red-500 hover:bg-red-600 hover:ring-2 hover:ring-red-500 hover:ring-offset-2 min-h-[2.25rem]"> {{ form_start(form) }}
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="button-icon"> <div class="flex flex-wrap items-center gap-3 justify-end">
<path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" /> {{ form_widget(form.no, {
</svg> attr: {
Ja, löschen class: 'inline-flex items-center justify-center py-2 gap-2 font-medium rounded-md px-4 text-sm text-psc-600 border border-psc-500 bg-white hover:bg-gray-50 hover:ring-2 hover:ring-psc-500 hover:ring-offset-1 shadow-sm'
</button> },
<button type="submit" name="{{ form.no.vars.full_name }}" value="1" class="inline-flex items-center justify-center py-2 gap-1 font-medium rounded-sm px-6 text-sm text-gray-700 shadow-lg bg-white hover:bg-gray-50 hover:ring-2 hover:ring-gray-300 hover:ring-offset-2 min-h-[2.25rem] border border-gray-300"> label: 'Nein, abbrechen'
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="button-icon"> }) }}
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" /> {{ form_widget(form.yes, {
</svg> attr: {
Nein, abbrechen class: 'inline-flex items-center justify-center py-2 gap-2 font-medium rounded-md px-4 text-sm text-white shadow-lg bg-red-500 hover:bg-red-600 hover:ring-2 hover:ring-red-500 hover:ring-offset-1'
</button> },
</div> label: 'Ja, löschen'
<div class="hidden"> }) }}
{{ form_widget(form.yes) }}
{{ form_widget(form.no) }}
</div> </div>
{{ form_end(form) }} {{ form_end(form) }}
</div> </div>
</div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -21,10 +21,10 @@
{% block body %} {% block body %}
<div class="flex flex-col gap-6"> <div class="flex flex-col gap-6">
<div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-sm border bg-white px-6 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<h2 class="ml-4 text-psc text-xl font-medium mb-4">Auftragsstatus</h2> <h2 class="ml-4 text-psc text-xl font-medium mb-4">Auftragsstatus</h2>
<div class=""> <div class="">
<div class="w-full grid grid-cols-5 border-t border-stroke px-4 bg-slate-100 py-4.5 dark:border-strokedark sm:grid-cols-10 md:px-6 2xl:px-7.5"> <div class="w-full grid grid-cols-5 border-t border-stroke px-4 bg-slate-100 py-4.5 dark:border-strokedark sm:grid-cols-10 md:px-6 2xl:px-6">
<div class="col-span-1 px-2 py-3"> <div class="col-span-1 px-2 py-3">
<p class="font-medium">Code</p> <p class="font-medium">Code</p>
</div> </div>
@ -40,7 +40,7 @@
<div class="col-span-1 sm:col-span-2 px-2 py-3"></div> <div class="col-span-1 sm:col-span-2 px-2 py-3"></div>
</div> </div>
{% for status in statusOrder %} {% for status in statusOrder %}
<div class="w-full grid grid-cols-5 border-t border-stroke px-4 py-4.5 dark:border-strokedark sm:grid-cols-10 md:px-6 2xl:px-7.5"> <div class="w-full grid grid-cols-5 border-t border-stroke px-4 py-4.5 dark:border-strokedark sm:grid-cols-10 md:px-6 2xl:px-6">
<div class="col-span-1 px-2 py-3">{{ status.code }}</div> <div class="col-span-1 px-2 py-3">{{ status.code }}</div>
<div class="col-span-1 px-2 py-3"> <div class="col-span-1 px-2 py-3">
{% if status.enable %} {% if status.enable %}
@ -52,13 +52,13 @@
<div class="col-span-2 sm:col-span-3 px-2 py-3">{{ status.internalName }}</div> <div class="col-span-2 sm:col-span-3 px-2 py-3">{{ status.internalName }}</div>
<div class="hidden sm:block sm:col-span-3 px-2 py-3">{{ status.externalName }}</div> <div class="hidden sm:block sm:col-span-3 px-2 py-3">{{ status.externalName }}</div>
<div class="col-span-1 sm:col-span-2 px-2 py-3 text-end flex flex-row gap-2 justify-end"> <div class="col-span-1 sm:col-span-2 px-2 py-3 text-end flex flex-row gap-2 justify-end">
<a href="{{ path("psc_system_status_edit", {uuid: status.id}) }}" class=""> <a href="{{ path("psc_system_status_edit", {uuid: status.id}) }}" title="Bearbeiten">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon text-green-600 hover:text-green-700 dark:text-green-500 dark:hover:text-green-400">
<path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" /> <path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" />
</svg> </svg>
</a> </a>
<a href="{{ path("psc_system_status_delete", {uuid: status.id}) }}" class=""> <a href="{{ path("psc_system_status_delete", {uuid: status.id}) }}" title="Löschen">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon text-red-600 hover:text-red-700 dark:text-red-500 dark:hover:text-red-400">
<path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" /> <path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" />
</svg> </svg>
</a> </a>
@ -68,10 +68,10 @@
</div> </div>
</div> </div>
<div class="rounded-sm border bg-white px-7.5 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark"> <div class="rounded-sm border bg-white px-6 py-6 shadow-lg dark:border-strokedark dark:bg-boxdark">
<h2 class="ml-4 text-psc text-xl font-medium mb-4">Positionsstatus</h2> <h2 class="ml-4 text-psc text-xl font-medium mb-4">Positionsstatus</h2>
<div class=""> <div class="">
<div class="w-full grid grid-cols-5 border-t border-stroke px-4 bg-slate-100 py-4.5 dark:border-strokedark sm:grid-cols-10 md:px-6 2xl:px-7.5"> <div class="w-full grid grid-cols-5 border-t border-stroke px-4 bg-slate-100 py-4.5 dark:border-strokedark sm:grid-cols-10 md:px-6 2xl:px-6">
<div class="col-span-1 px-2 py-3"> <div class="col-span-1 px-2 py-3">
<p class="font-medium">Code</p> <p class="font-medium">Code</p>
</div> </div>
@ -87,7 +87,7 @@
<div class="col-span-1 sm:col-span-2 px-2 py-3"></div> <div class="col-span-1 sm:col-span-2 px-2 py-3"></div>
</div> </div>
{% for status in statusPosition %} {% for status in statusPosition %}
<div class="w-full grid grid-cols-5 border-t border-stroke px-4 py-4.5 dark:border-strokedark sm:grid-cols-10 md:px-6 2xl:px-7.5"> <div class="w-full grid grid-cols-5 border-t border-stroke px-4 py-4.5 dark:border-strokedark sm:grid-cols-10 md:px-6 2xl:px-6">
<div class="col-span-1 px-2 py-3">{{ status.code }}</div> <div class="col-span-1 px-2 py-3">{{ status.code }}</div>
<div class="col-span-1 px-2 py-3"> <div class="col-span-1 px-2 py-3">
{% if status.enable %} {% if status.enable %}
@ -99,13 +99,13 @@
<div class="col-span-2 sm:col-span-3 px-2 py-3">{{ status.internalName }}</div> <div class="col-span-2 sm:col-span-3 px-2 py-3">{{ status.internalName }}</div>
<div class="hidden sm:block sm:col-span-3 px-2 py-3">{{ status.externalName }}</div> <div class="hidden sm:block sm:col-span-3 px-2 py-3">{{ status.externalName }}</div>
<div class="col-span-1 sm:col-span-2 px-2 py-3 text-end flex flex-row gap-2 justify-end"> <div class="col-span-1 sm:col-span-2 px-2 py-3 text-end flex flex-row gap-2 justify-end">
<a href="{{ path("psc_system_status_edit", {uuid: status.id}) }}" class=""> <a href="{{ path("psc_system_status_edit", {uuid: status.id}) }}" title="Bearbeiten">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon text-green-600 hover:text-green-700 dark:text-green-500 dark:hover:text-green-400">
<path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" /> <path stroke-linecap="round" stroke-linejoin="round" d="m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10" />
</svg> </svg>
</a> </a>
<a href="{{ path("psc_system_status_delete", {uuid: status.id}) }}" class=""> <a href="{{ path("psc_system_status_delete", {uuid: status.id}) }}" title="Löschen">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="table-icon text-red-600 hover:text-red-700 dark:text-red-500 dark:hover:text-red-400">
<path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" /> <path stroke-linecap="round" stroke-linejoin="round" d="m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" />
</svg> </svg>
</a> </a>

View File

@ -1,8 +1,12 @@
info: info:
datum: 19.03.2026 datum: 20.03.2026
release: 2.3.4 release: 2.3.5
changelog: changelog:
- version: 2.3.5
datum: 20.03.2026
changes:
- "Löschen von Kunden wenn kein Afträge da."
- version: 2.3.4 - version: 2.3.4
datum: 19.03.2026 datum: 19.03.2026
changes: changes: