Fix warning data per Interventi in Fattura

This commit is contained in:
Dasc3er 2021-09-17 10:30:36 +02:00
parent 36d70a7d23
commit fce5c09eaf
4 changed files with 68 additions and 6 deletions

View File

@ -94,12 +94,15 @@ if ($dir == 'entrata') {
}
// Verifica la data dell'intervento rispetto alla data della fattura
$righe_interventi = $fattura->getRighe()->where('idintervento', '!=', null);
if (!empty($righe_interventi)) {
foreach ($righe_interventi as $riga_intervento) {
$intervento = Intervento::find($riga_intervento->idintervento);
$fatturazione_futura = false;
$data_fattura = new Carbon($fattura->data);
$interventi_collegati = $fattura->getDocumentiCollegati()[Intervento::class];
if (!empty($interventi_collegati)) {
foreach ($interventi_collegati as $intervento) {
$fine_intervento = $intervento->fine ?: $intervento->data_richiesta;
$fine_intervento = new Carbon($fine_intervento);
if ((new Carbon($intervento->fine))->diffInDays(new Carbon($fattura->data), false) < 0) {
if ($fine_intervento->diffInDays($data_fattura, false) < 0) {
$fatturazione_futura = true;
break;
}

View File

@ -193,6 +193,10 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
$qta_gruppo = $gruppo->sum('ore');
$riga->qta = round($qta_gruppo, $decimals);
// Riferimento al documento di origine
$riga->original_document_type = get_class($intervento);
$riga->original_document_id = $intervento->id;
$riga->save();
}
@ -222,6 +226,10 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
$riga->qta = $gruppo->count();
// Riferimento al documento di origine
$riga->original_document_type = get_class($intervento);
$riga->original_document_id = $intervento->id;
$riga->save();
}
@ -255,6 +263,10 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
$riga->prezzo_unitario = $viaggio->prezzo_km_unitario;
$riga->setSconto($viaggio->scontokm_unitario, $viaggio->tipo_scontokm);
// Riferimento al documento di origine
$riga->original_document_type = get_class($intervento);
$riga->original_document_id = $intervento->id;
$riga->qta = $qta_trasferta;
$riga->save();
@ -265,7 +277,6 @@ function aggiungi_intervento_in_fattura($id_intervento, $id_fattura, $descrizion
$righe = $intervento->getRighe();
foreach ($righe as $riga) {
$qta = $riga->qta;
$copia = $riga->copiaIn($fattura, $qta);
$copia->id_conto = $id_conto;

View File

@ -45,6 +45,41 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
return static::$movimenta_magazzino;
}
/**
* Restituisce tutti i documenti collegati al documento corrente attraverso la procedura di importazione delle righe.
*
* @return \Illuminate\Support\Collection
*/
public function getDocumentiCollegati()
{
$riferimenti = collect([
$this->descrizioni()
->select(['original_document_id', 'original_document_type'])
->get(),
$this->righe()
->select(['original_document_id', 'original_document_type'])
->get(),
$this->articoli()
->select(['original_document_id', 'original_document_type'])
->get(),
$this->sconti()
->select(['original_document_id', 'original_document_type'])
->get(),
])->flatten();
return $riferimenti->reject(function ($item) {
return empty($item->original_document_type);
})->unique(function ($item) {
return $item->original_document_type.'|'.$item->original_document_id;
})->mapToGroups(function ($item) {
return [$item->original_document_type => ($item->original_document_type)::find($item->original_document_id)];
});
}
/**
* Restituisce tutte le righe collegate al documento.
* @return \Illuminate\Support\Collection|iterable
*/
public function getRighe()
{
$results = $this->mergeCollections($this->descrizioni, $this->righe, $this->articoli, $this->sconti);
@ -54,6 +89,12 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
});
}
/**
* Restituisce la riga con tipo e identificativo corrispondente.
* @param $type
* @param $id
* @return mixed
*/
public function getRiga($type, $id)
{
$righe = $this->getRighe();
@ -63,6 +104,10 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt
});
}
/**
* Restituisce le righe del documento raggruppate per documento di origine.
* @return \Illuminate\Support\Collection|iterable
*/
public function getRigheRaggruppate()
{
$righe = $this->getRighe();

View File

@ -101,3 +101,6 @@ UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `dt_causalet` WHERE 1=
-- Fix query per la lista newsletter predefinita
UPDATE `em_lists` SET `query` = 'SELECT idanagrafica AS id, ''Modules\\\\Anagrafiche\\\\Anagrafica'' AS tipo FROM an_anagrafiche' WHERE `query` = 'SELECT idanagrafica AS id FROM an_anagrafiche WHERE email != ''''';
-- Fix riferimento documento per righe create da Interventi
UPDATE `co_righe_documenti` SET `original_document_id` = `idintervento`, `original_document_type` = 'Modules\\Interventi\\Intervento' WHERE `idintervento` IS NOT NULL;