Bläddra i källkod

check fattura esistente

FabioFratini 9 månader sedan
förälder
incheckning
6ef6d93506
1 ändrade filer med 48 tillägg och 201 borttagningar
  1. 48 201
      app/Http/Livewire/RecordOUT.php

+ 48 - 201
app/Http/Livewire/RecordOUT.php

@@ -1022,6 +1022,45 @@ class RecordOUT extends Component
      */
     private function createRecord($supplierId, $paymentMethodId, $fatturaData)
     {
+        $existingRecord = \App\Models\Record::where('supplier_id', $supplierId)
+        ->where('numero_fattura', $fatturaData['numeroFattura'])
+        ->first();
+
+        if ($existingRecord) {
+            Log::info("Trovato record esistente con ID: " . $existingRecord->id . " per fornitore ID: " . $supplierId . " e numero fattura: " . $fatturaData['numeroFattura']);
+
+            $existingRecord->payment_method_id = $paymentMethodId;
+            $existingRecord->date = $fatturaData['dataDocumento'];
+            $existingRecord->data_pagamento = $fatturaData['dataDocumento'];
+            $existingRecord->type = 'OUT';
+            $existingRecord->commercial = 1;
+            $existingRecord->corrispettivo_fiscale = 0;
+            $existingRecord->deleted = 0;
+            $existingRecord->financial_movement = 1;
+            $existingRecord->amount = $fatturaData['importoTotale'];
+            $existingRecord->tipo_documento = $this->mapTipoDocumento($fatturaData['tipoDocumento']);
+            $existingRecord->is_ricevuta = true;
+
+            if (isset($fatturaData['condizioniPagamento']) && !empty($fatturaData['condizioniPagamento'])) {
+                $existingRecord->condizioni_pagamento = $this->mapCondizioniPagamento($fatturaData['condizioniPagamento']);
+            }
+            if (isset($fatturaData['iban']) && !empty($fatturaData['iban'])) {
+                $existingRecord->IBAN = $fatturaData['iban'];
+            }
+            if (isset($fatturaData['bic']) && !empty($fatturaData['bic'])) {
+                $existingRecord->BIC = $fatturaData['bic'];
+            }
+            if (isset($fatturaData['dataScadenza']) && !empty($fatturaData['dataScadenza'])) {
+                $existingRecord->data_scadenza = $fatturaData['dataScadenza'];
+            }
+
+            $existingRecord->save();
+
+            Log::info("Record esistente aggiornato con ID: " . $existingRecord->id);
+
+            return $existingRecord;
+        }
+
         $record = new \App\Models\Record();
         $record->supplier_id = $supplierId;
         $record->payment_method_id = $paymentMethodId;
@@ -1062,6 +1101,15 @@ class RecordOUT extends Component
     private function createRecordRow($recordId, $fatturaData)
     {
         Log::info("Inizio creazione RecordRow per Record ID: " . $recordId);
+        $existingRows = \App\Models\RecordRow::where('record_id', $recordId)->get();
+
+        // Delete existing rows if they exist
+        if ($existingRows->count() > 0) {
+            Log::info("Eliminazione di " . $existingRows->count() . " righe record esistenti per Record ID: " . $recordId);
+            foreach ($existingRows as $row) {
+                $row->delete();
+            }
+        }
 
         if (!empty($fatturaData['linee'])) {
             foreach ($fatturaData['linee'] as $linea) {
@@ -1209,208 +1257,7 @@ class RecordOUT extends Component
 
         Log::info("Riga record predefinita creata con importo totale: {$fatturaData['importoTotale']}");
     }
-    /**
-     * Crea una ricevuta collegata al record
-     */
-    /* private function createReceipt($recordId, $supplierId, $paymentMethodId, $fatturaData)
-    {
-        Log::info("Inizio creazione ricevuta per Record ID: " . $recordId);
-
-        $receipt = new \App\Models\Receipt();
-        $receipt->record_id = $recordId;
-        $receipt->supplier_id = $supplierId;
-        $receipt->payment_method_id = $paymentMethodId;
-        $receipt->date = $fatturaData['dataDocumento'];
-        $receipt->data_pagamento = $fatturaData['dataDocumento'];
-        $receipt->numero_fattura =  $fatturaData['numeroFattura'];
-        $receipt->number = preg_replace('/[^0-9]/', '', $fatturaData['numeroFattura']);
-        $receipt->tipo_documento = $this->mapTipoDocumento($fatturaData['tipoDocumento']);
-        $receipt->year = date('Y', strtotime($fatturaData['dataDocumento']));
-        $receipt->type = 'OUT';
-        $receipt->status = 1;
-        $receipt->is_ricevuta = true;
-        if (isset($fatturaData['condizioniPagamento']) && !empty($fatturaData['condizioniPagamento'])) {
-            $receipt->condizioni_pagamento = $this->mapCondizioniPagamento($fatturaData['condizioniPagamento']);
-        }
-        if (isset($fatturaData['iban']) && !empty($fatturaData['iban'])) {
-            $receipt->IBAN = $fatturaData['iban'];
-        }
-        if (isset($fatturaData['bic']) && !empty($fatturaData['bic'])) {
-            $receipt->BIC = $fatturaData['bic'];
-        }
-        if (isset($fatturaData['dataScadenza']) && !empty($fatturaData['dataScadenza'])) {
-            $receipt->data_scadenza = $fatturaData['dataScadenza'];
-        }
-
-        Log::info("Dati ricevuta prima del salvataggio: " . json_encode([
-            'record_id' => $receipt->record_id,
-            'supplier_id' => $receipt->supplier_id,
-            'payment_method_id' => $receipt->payment_method_id,
-            'date' => $receipt->date,
-            'number' => $receipt->number,
-            'tipo_documento' => $receipt->tipo_documento,
-            'year' => $receipt->year,
-            'type' => $receipt->type,
-            'status' => $receipt->status,
-        ]));
-
-        $receipt->save();
-
-        Log::info("Ricevuta creata con ID: " . $receipt->id);
-
-        return $receipt;
-    }
-
-    private function createReceiptRows($receiptId, $fatturaData)
-    {
-        Log::info("Inizio creazione righe ricevuta per Ricevuta ID: " . $receiptId);
-
-        if (!empty($fatturaData['linee'])) {
-            foreach ($fatturaData['linee'] as $linea) {
-                $this->createSingleReceiptRow($receiptId, $fatturaData, $linea);
-            }
-        } else if ($fatturaData['riepilogo']) {
-            $this->createReceiptRowFromRiepilogo($receiptId, $fatturaData);
-            Log::info("Creata una riga di ricevuta dai dati di riepilogo");
-        } else {
-            $this->createDefaultReceiptRow($receiptId, $fatturaData);
-            Log::info("Creata una riga di ricevuta predefinita dall'importo totale");
-        }
-    }
-
-    private function createSingleReceiptRow($receiptId, $fatturaData, $linea)
-    {
-        Log::info("Inizio creazione riga ricevuta singola per Ricevuta ID: " . $receiptId . ", Linea: " . json_encode($linea));
-
-        $dataObj = new \DateTime($fatturaData['dataDocumento']);
-        $month = $dataObj->format('n');
-        $year = $dataObj->format('Y');
-        $period = "$month-$year";
-
-        $whenData = [[
-            'month' => $month,
-            'year' => $year,
-            'period' => $period
-        ]];
-
-        $receiptRow = new \App\Models\ReceiptRow();
-        $receiptRow->receip_id = $receiptId;
-        $receiptRow->causal_id = $this->selectedCausal;
-        $receiptRow->amount = $linea['prezzoTotale'] + $linea['prezzoTotale'] * ($linea['aliquotaIva'] / 100);
-        $receiptRow->note = $linea['descrizione'];
-        $receiptRow->commercial = 1;
-
-        $receiptRow->when = json_encode($whenData);
-        $receiptRow->aliquota_iva = $linea['aliquotaIva'];
-        $receiptRow->imponibile = $linea['prezzoTotale'];
-        $receiptRow->imposta = $linea['prezzoTotale'] * ($linea['aliquotaIva'] / 100);
-        $receiptRow->divisa = $fatturaData['divisa'];
-        $receiptRow->numero_linea = $linea['numeroLinea'];
-        $receiptRow->prezzo_unitario = $linea['prezzoUnitario'];
-        $receiptRow->quantita = $linea['quantita'];
-
-        Log::info("Dati riga ricevuta prima del salvataggio: " . json_encode([
-            'receip_id' => $receiptRow->receip_id,
-            'causal_id' => $receiptRow->causal_id,
-            'amount' => $receiptRow->amount,
-            'note' => $receiptRow->note,
-            'aliquota_iva' => $receiptRow->aliquota_iva,
-            'imponibile' => $receiptRow->imponibile,
-            'imposta' => $receiptRow->imposta,
-            'divisa' => $receiptRow->divisa,
-            'numero_linea' => $receiptRow->numero_linea,
-            'prezzo_unitario' => $receiptRow->prezzo_unitario,
-            'quantita' => $receiptRow->quantita,
-        ]));
-
-        $receiptRow->save();
-
-        Log::info("Riga ricevuta creata per linea {$linea['numeroLinea']}: {$linea['descrizione']} (€{$linea['prezzoTotale']})");
-    }
-
-    private function createReceiptRowFromRiepilogo($receiptId, $fatturaData)
-    {
-        Log::info("Inizio creazione riga ricevuta da riepilogo per Ricevuta ID: " . $receiptId . ", Riepilogo: " . json_encode($fatturaData['riepilogo']));
-
-        $riepilogo = $fatturaData['riepilogo'];
-
-        $dataObj = new \DateTime($fatturaData['dataDocumento']);
-        $month = $dataObj->format('n');
-        $year = $dataObj->format('Y');
-        $period = "$month-$year";
 
-        $whenData = [[
-            'month' => $month,
-            'year' => $year,
-            'period' => $period
-        ]];
-        $total_amount = $riepilogo['imponibile'] + $riepilogo['imposta'];
-        $receiptRow = new \App\Models\ReceiptRow();
-        $receiptRow->receip_id = $receiptId;
-        $receiptRow->causal_id = $this->selectedCausal;
-        $receiptRow->amount = $total_amount;
-        $receiptRow->commercial = 1;
-
-        $receiptRow->when = json_encode($whenData);
-        $receiptRow->aliquota_iva = $riepilogo['aliquotaIva'];
-        $receiptRow->imponibile = $riepilogo['imponibile'];
-        $receiptRow->imposta = $riepilogo['imposta'];
-        $receiptRow->divisa = $fatturaData['divisa'];
-        $receiptRow->numero_linea = 1;
-        $receiptRow->quantita = 1;
-
-        Log::info("Dati riga ricevuta da riepilogo prima del salvataggio: " . json_encode([
-            'receip_id' => $receiptRow->receip_id,
-            'causal_id' => $receiptRow->causal_id,
-            'amount' => $receiptRow->amount,
-            'aliquota_iva' => $receiptRow->aliquota_iva,
-            'imponibile' => $receiptRow->imponibile,
-            'imposta' => $receiptRow->imposta,
-            'divisa' => $receiptRow->divisa,
-        ]));
-
-        $receiptRow->save();
-
-        Log::info("Riga ricevuta creata da riepilogo: Imponibile={$riepilogo['imponibile']}, IVA={$riepilogo['aliquotaIva']}%");
-    }
-
-    private function createDefaultReceiptRow($receiptId, $fatturaData)
-    {
-        Log::info("Inizio creazione riga ricevuta predefinita per Ricevuta ID: " . $receiptId . ", Importo Totale: " . $fatturaData['importoTotale']);
-
-        $dataObj = new \DateTime($fatturaData['dataDocumento']);
-        $month = $dataObj->format('n');
-        $year = $dataObj->format('Y');
-        $period = "$month-$year";
-
-        $whenData = [[
-            'month' => $month,
-            'year' => $year,
-            'period' => $period
-        ]];
-        $receiptRow = new \App\Models\ReceiptRow();
-        $receiptRow->receip_id = $receiptId;
-        $receiptRow->causal_id = $this->selectedCausal;
-        $receiptRow->amount = $fatturaData['importoTotale'];
-        $receiptRow->commercial = 1;
-
-        $receiptRow->when = json_encode($whenData);
-        $receiptRow->divisa = $fatturaData['divisa'];
-        $receiptRow->numero_linea = 1;
-        $receiptRow->quantita = 1;
-
-        Log::info("Dati riga ricevuta predefinita prima del salvataggio: " . json_encode([
-            'receip_id' => $receiptRow->receip_id,
-            'causal_id' => $receiptRow->causal_id,
-            'amount' => $receiptRow->amount,
-            'divisa' => $receiptRow->divisa,
-        ]));
-
-        $receiptRow->save();
-
-        Log::info("Riga ricevuta predefinita creata con importo totale: {$fatturaData['importoTotale']}");
-    }
- */
     private function mapTipoDocumento($codice)
     {
         $tipiDocumento = [