|
|
@@ -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 = [
|