fix: rework document and disposition workflow

This commit is contained in:
Björn Fromme
2024-04-19 12:34:04 +02:00
parent 94e01773d4
commit 4372cdaaeb
6 changed files with 52 additions and 27 deletions
+1
View File
@@ -23,6 +23,7 @@ class Disposition implements BlameableEntityInterface, TimestampableEntityInterf
public const STATUS_NEW = 'new';
public const STATUS_CHECKING_CONTRACT = 'checking_contract';
public const STATUS_CONFIRMED = 'confirmed';
public const STATUS_ENDED = 'ended';
public const STATUS_CHECKING_INVOICE = 'checking_invoice';
public const STATUS_PAID = 'paid';
public const STATUS_COMPLETED = 'completed';
@@ -110,7 +110,7 @@ class DispositionWorkflowGuardSubscriber implements EventSubscriberInterface
$disposition = $event->getSubject();
$invoiceDocument = $disposition->getDocumentByType(Upload::TYPE_INVOICE);
if (null === $invoiceDocument || Upload::STATUS_CHECKED !== $invoiceDocument->getStatus()) {
if (null === $invoiceDocument || Upload::STATUS_PAID !== $invoiceDocument->getStatus()) {
$message = $this
->translator
->trans('message.confirm_invoice.document_missing_or_not_checked')
+14 -6
View File
@@ -225,13 +225,21 @@ class DispositionRepository extends ServiceEntityRepository
return $qb
->innerJoin('disposition.assignment', 'assignment')
->innerJoin('assignment.destination', 'destination')
->where($qb->expr()->orX(
$qb->expr()->andX(
$qb->expr()->isNotNull('assignment.dateTo'),
$qb->expr()->lte('assignment.dateTo', ':dateTo')
),
$qb->expr()->lte('destination.dateTo', ':dateTo')
->where($qb->expr()->andX(
$qb->expr()->in('disposition.status', ':status'),
$qb->expr()->orX(
$qb->expr()->andX(
$qb->expr()->isNotNull('assignment.dateTo'),
$qb->expr()->lte('assignment.dateTo', ':dateTo')
),
$qb->expr()->lte('destination.dateTo', ':dateTo')
)
))
->setParameter('status', [
Disposition::STATUS_NEW,
Disposition::STATUS_CHECKING_CONTRACT,
Disposition::STATUS_CONFIRMED,
])
->setParameter('dateTo', new \DateTimeImmutable())
->getQuery()
->getResult()
@@ -18,7 +18,8 @@ class DispositionStatusService
{
$endedDispositions = $this
->entityManager
->getRepository(Disposition::class)->findEndedDispositions()
->getRepository(Disposition::class)
->findEndedDispositions()
;
if (0 === $count = count($endedDispositions)) {
@@ -26,7 +27,7 @@ class DispositionStatusService
}
foreach ($endedDispositions as $disposition) {
$disposition->setStatus(Disposition::STATUS_COMPLETED);
$disposition->setStatus(Disposition::STATUS_ENDED);
}
$this->entityManager->flush();