Fix registrazione scadenze da bulk
This commit is contained in:
parent
3573737eb9
commit
50e0e95e2a
|
@ -41,7 +41,7 @@ if (sizeof($rs_doc) > 0) {
|
|||
<div class="col-md-2">
|
||||
<br>
|
||||
<div class="btn-group">
|
||||
<a href="<?php echo base_path(); ?>/editor.php?id_module=<?php echo (new Module())->getByField('title', 'Preventivi', Models\Locale::getPredefined()->id); ?>&id_record=<?php echo $rs_doc[0]['iddocumento']; ?>" class="btn btn-info"><i class="fa fa-chevron-left"></i> <?php echo tr('Vai alla fattura'); ?></a>
|
||||
<a href="<?php echo base_path(); ?>/editor.php?id_module=<?php echo (new Module())->getByField('title', 'Fatture di vendita', Models\Locale::getPredefined()->id); ?>&id_record=<?php echo $rs_doc[0]['iddocumento']; ?>" class="btn btn-info"><i class="fa fa-chevron-left"></i> <?php echo tr('Vai alla fattura'); ?></a>
|
||||
<a type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="caret"></span>
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
|
|
|
@ -78,7 +78,7 @@ function renderTabella($nome, $righe, $totale_dare = null, $totale_avere = null)
|
|||
<tbody>';
|
||||
|
||||
foreach ($righe as $riga) {
|
||||
renderRiga($counter++, $riga);
|
||||
renderRiga($counter++, $riga, $totale_dare, $totale_avere);
|
||||
}
|
||||
|
||||
// Totale per controllare sbilancio
|
||||
|
@ -169,7 +169,9 @@ renderRiga('-id-',
|
|||
[
|
||||
'iddocumento' => '-id_documento-',
|
||||
'id_scadenza' => '-id_scadenza-',
|
||||
]
|
||||
],
|
||||
$totale_dare,
|
||||
$totale_avere
|
||||
);
|
||||
|
||||
echo '
|
||||
|
@ -224,7 +226,7 @@ function controllaConti() {
|
|||
|
||||
// Blocco degli input con valore non impostato
|
||||
$("input[id*=dare], input[id*=avere]").each(function() {
|
||||
let conto_relativo = $(this).parent().parent().parent().find("select").val();
|
||||
let conto_relativo = $(this).parent().parent().parent().parent().find("select").val();
|
||||
|
||||
if (!conto_relativo) {
|
||||
$(this).prop("disabled", true);
|
||||
|
|
|
@ -22,6 +22,7 @@ namespace Modules\PrimaNota;
|
|||
use Common\SimpleModelTrait;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Modules\Fatture\Fattura;
|
||||
use Modules\Fatture\Stato;
|
||||
/*
|
||||
* Struttura ausiliaria dedicata alla raggruppamento e alla gestione di un insieme di Movimenti, unificati attraverso il numero di mastrino.
|
||||
*
|
||||
|
@ -112,31 +113,11 @@ class Mastrino extends Model
|
|||
$movimenti = $movimenti ?: $this->movimenti;
|
||||
|
||||
// Aggiornamento delle scadenze per i singoli documenti
|
||||
$documenti = [];
|
||||
$scadenze = [];
|
||||
$documenti = $this->getUniqueDocumenti($movimenti);
|
||||
$scadenze = $this->getScadenzePerDocumenti($movimenti, $documenti);
|
||||
|
||||
foreach ($movimenti as $movimento) {
|
||||
$scadenza = $movimento->scadenza;
|
||||
$documento = $movimento->documento;
|
||||
|
||||
// Retrocompatibilità per versioni <= 2.4.11
|
||||
if (!empty($documento)) {
|
||||
if (!in_array($documento->id, $documenti)) {
|
||||
$documenti[] = $documento->id;
|
||||
|
||||
$this->correggiScadenza($movimento, $scadenza, $documento);
|
||||
}
|
||||
} elseif (!empty($scadenza)) {
|
||||
$id_documento = $scadenza->documento->id;
|
||||
|
||||
if (!in_array($id_documento, $documenti) && !in_array($scadenza->id, $scadenze)) {
|
||||
if (!empty($id_documento)) {
|
||||
$documenti[] = $id_documento;
|
||||
}
|
||||
$scadenze[] = $scadenza->id;
|
||||
|
||||
$this->correggiScadenza($movimento, $scadenza);
|
||||
}
|
||||
}
|
||||
$this->correggiScadenza($movimento, $scadenze[$movimento->iddocumento], $movimento->iddocumento);
|
||||
}
|
||||
|
||||
// Fix dello stato della Fattura
|
||||
|
@ -157,10 +138,37 @@ class Mastrino extends Model
|
|||
$stato = 'Emessa';
|
||||
}
|
||||
|
||||
$database->query('UPDATE `co_documenti` SET `idstatodocumento` = (SELECT `co_statidocumento`.`id` FROM `co_statidocumento` LEFT JOIN `co_statidocumento_lang` ON (`co_statidocumento`.`id` = `co_statidocumento_lang`.`id_record` AND `co_statidocumento_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).') WHERE `title` = '.prepare($stato).') WHERE id = '.prepare($id_documento));
|
||||
$documento = Fattura::find($id_documento);
|
||||
$stato = (new Stato())->getByField('title', $stato, \Models\Locale::getPredefined()->id);
|
||||
$documento->stato()->associate($stato);
|
||||
$documento->save();
|
||||
}
|
||||
}
|
||||
|
||||
private function getUniqueDocumenti($movimenti)
|
||||
{
|
||||
$documentIds = [];
|
||||
foreach ($movimenti as $movimento) {
|
||||
if (!in_array($movimento->iddocumento, $documentIds)) {
|
||||
$documentIds[] = $movimento->documento->id;
|
||||
}
|
||||
}
|
||||
return $documentIds;
|
||||
}
|
||||
|
||||
private function getScadenzePerDocumenti($movimenti, $documenti)
|
||||
{
|
||||
$scadenze = [];
|
||||
foreach ($movimenti as $movimento) {
|
||||
if (in_array($movimento->iddocumento, $documenti)) {
|
||||
if (!in_array($movimento->id_scadenza, $scadenze[$movimento->iddocumento] ?? [])) {
|
||||
$scadenze[$movimento->iddocumento][] = $movimento->id_scadenza;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $scadenze;
|
||||
}
|
||||
|
||||
// Relazioni Eloquent
|
||||
|
||||
public function fattura()
|
||||
|
@ -185,31 +193,29 @@ class Mastrino extends Model
|
|||
/**
|
||||
* Funzione dedicata alla distribuzione del totale pagato del movimento nelle relative scadenze associate.
|
||||
*/
|
||||
protected function correggiScadenza(Movimento $movimento, ?Scadenza $scadenza = null, ?Fattura $documento = null)
|
||||
protected function correggiScadenza(Movimento $movimento, $scadenze = null, $documento = null)
|
||||
{
|
||||
$is_nota = false;
|
||||
$documento = $documento ?: $scadenza->documento;
|
||||
|
||||
if ($scadenza && empty($documento)) {
|
||||
$scadenze = [$scadenza];
|
||||
$dir = $movimento->totale < 0 ? 'uscita' : 'entrata';
|
||||
if ($scadenze) {
|
||||
if (empty($documento)) {
|
||||
$dir = $movimento->totale < 0 ? 'uscita' : 'entrata';
|
||||
} else {
|
||||
$dir = Fattura::find($documento)->direzione;
|
||||
}
|
||||
|
||||
$totale_da_distribuire = Movimento::where('id_scadenza', '=', $scadenza->id)
|
||||
$totale_da_distribuire = 0;
|
||||
foreach ($scadenze as $scadenza) {
|
||||
$totale_da_distribuire += Movimento::where('id_scadenza', '=', $scadenza->id)
|
||||
->where('totale', '>', 0)
|
||||
->sum('totale');
|
||||
} elseif ($scadenza) {
|
||||
$scadenze = [$scadenza];
|
||||
$dir = $documento->direzione;
|
||||
|
||||
$totale_da_distribuire = Movimento::where('id_scadenza', '=', $scadenza->id)
|
||||
->where('totale', '>', 0)
|
||||
->sum('totale');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Gestione delle scadenze di un documento
|
||||
elseif ($documento) {
|
||||
$dir = $documento->direzione;
|
||||
$scadenze = $documento->scadenze->sortBy('scadenza');
|
||||
$scadenze = $documento->scadenze->sortBy('scadenza')->all();
|
||||
|
||||
$movimenti = $documento->movimentiContabili;
|
||||
|
||||
|
@ -233,7 +239,8 @@ class Mastrino extends Model
|
|||
// Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive
|
||||
|
||||
foreach ($scadenze as $scadenza) {
|
||||
$scadenza_da_pagare = abs($scadenza['da_pagare']);
|
||||
$scadenza = Scadenza::find($scadenza);
|
||||
$scadenza_da_pagare = abs($scadenza->da_pagare);
|
||||
|
||||
// Nel caso in cui il totale da distribuire sia stato esaurito, imposta il pagato a zero
|
||||
if ($totale_da_distribuire <= 0) {
|
||||
|
|
Loading…
Reference in New Issue