fixed import where it did not reactivate contract that was archived

This commit is contained in:
Simon Pocrnjič
2025-10-30 19:49:31 +01:00
parent cb7851f91c
commit bdde610178
2 changed files with 39 additions and 6 deletions
+6 -6
View File
@@ -258,7 +258,7 @@ public function process(Import $import, ?Authenticatable $user = null): array
$ref = preg_replace('/\s+/', '', trim($ref));
}
if ($ref) {
$q = Contract::query()
$q = Contract::query()->withTrashed()
->when($import->client_id, function ($q2, $clientId) {
$q2->join('client_cases', 'contracts.client_case_id', '=', 'client_cases.id')
->where('client_cases.client_id', $clientId);
@@ -266,10 +266,10 @@ public function process(Import $import, ?Authenticatable $user = null): array
->where('contracts.reference', $ref)
->select('contracts.*');
$found = $q->first();
if ($found) {
if ($found instanceof \App\Models\Contract) {
$contractResult = ['action' => 'resolved', 'contract' => $found];
// Reactivation branch for resolved existing contract
if ($reactivateMode && ($found->active == 0 || $found->deleted_at)) {
if ($found->active == 0 || $found->deleted_at) {
$reactivationApplied = $this->attemptContractReactivation($found, $user);
if ($reactivationApplied['reactivated']) {
$reactivatedThisRow = true;
@@ -300,7 +300,7 @@ public function process(Import $import, ?Authenticatable $user = null): array
} else {
$contractResult = $this->upsertContractChain($import, $mapped, $mappings);
// If contract was resolved/updated/inserted and reactivation requested but not needed (already active), we just continue normal flow.
if ($reactivateMode && $contractResult && isset($contractResult['contract']) && $contractResult['contract'] instanceof Contract) {
if ($contractResult && isset($contractResult['contract']) && $contractResult['contract'] instanceof Contract) {
$found = $contractResult['contract'];
if ($found->active == 0 || $found->deleted_at) {
$reactivationApplied = $this->attemptContractReactivation($found, $user);
@@ -1501,7 +1501,7 @@ private function upsertContractChain(Import $import, array $mapped, $mappings):
// Try to find existing contract EARLY by (client_id, reference) across all cases to prevent duplicates
$existing = null;
if ($clientId) {
$existing = Contract::query()
$existing = Contract::query()->withTrashed()
->join('client_cases', 'contracts.client_case_id', '=', 'client_cases.id')
->where('client_cases.client_id', $clientId)
->where('contracts.reference', $reference)
@@ -1511,7 +1511,7 @@ private function upsertContractChain(Import $import, array $mapped, $mappings):
// If not found by client+reference and a specific client_case_id is provided, try that too
if (! $existing && $clientCaseId) {
$existing = Contract::query()
$existing = Contract::query()->withTrashed()
->where('client_case_id', $clientCaseId)
->where('reference', $reference)
->first();