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">
|
<div class="col-md-2">
|
||||||
<br>
|
<br>
|
||||||
<div class="btn-group">
|
<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">
|
<a type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<span class="caret"></span>
|
<span class="caret"></span>
|
||||||
<span class="sr-only">Toggle Dropdown</span>
|
<span class="sr-only">Toggle Dropdown</span>
|
||||||
|
|
|
@ -78,7 +78,7 @@ function renderTabella($nome, $righe, $totale_dare = null, $totale_avere = null)
|
||||||
<tbody>';
|
<tbody>';
|
||||||
|
|
||||||
foreach ($righe as $riga) {
|
foreach ($righe as $riga) {
|
||||||
renderRiga($counter++, $riga);
|
renderRiga($counter++, $riga, $totale_dare, $totale_avere);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Totale per controllare sbilancio
|
// Totale per controllare sbilancio
|
||||||
|
@ -169,7 +169,9 @@ renderRiga('-id-',
|
||||||
[
|
[
|
||||||
'iddocumento' => '-id_documento-',
|
'iddocumento' => '-id_documento-',
|
||||||
'id_scadenza' => '-id_scadenza-',
|
'id_scadenza' => '-id_scadenza-',
|
||||||
]
|
],
|
||||||
|
$totale_dare,
|
||||||
|
$totale_avere
|
||||||
);
|
);
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
|
@ -224,7 +226,7 @@ function controllaConti() {
|
||||||
|
|
||||||
// Blocco degli input con valore non impostato
|
// Blocco degli input con valore non impostato
|
||||||
$("input[id*=dare], input[id*=avere]").each(function() {
|
$("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) {
|
if (!conto_relativo) {
|
||||||
$(this).prop("disabled", true);
|
$(this).prop("disabled", true);
|
||||||
|
|
|
@ -22,6 +22,7 @@ namespace Modules\PrimaNota;
|
||||||
use Common\SimpleModelTrait;
|
use Common\SimpleModelTrait;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Modules\Fatture\Fattura;
|
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.
|
* 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;
|
$movimenti = $movimenti ?: $this->movimenti;
|
||||||
|
|
||||||
// Aggiornamento delle scadenze per i singoli documenti
|
// Aggiornamento delle scadenze per i singoli documenti
|
||||||
$documenti = [];
|
$documenti = $this->getUniqueDocumenti($movimenti);
|
||||||
$scadenze = [];
|
$scadenze = $this->getScadenzePerDocumenti($movimenti, $documenti);
|
||||||
|
|
||||||
foreach ($movimenti as $movimento) {
|
foreach ($movimenti as $movimento) {
|
||||||
$scadenza = $movimento->scadenza;
|
$this->correggiScadenza($movimento, $scadenze[$movimento->iddocumento], $movimento->iddocumento);
|
||||||
$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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix dello stato della Fattura
|
// Fix dello stato della Fattura
|
||||||
|
@ -157,10 +138,37 @@ class Mastrino extends Model
|
||||||
$stato = 'Emessa';
|
$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
|
// Relazioni Eloquent
|
||||||
|
|
||||||
public function fattura()
|
public function fattura()
|
||||||
|
@ -185,31 +193,29 @@ class Mastrino extends Model
|
||||||
/**
|
/**
|
||||||
* Funzione dedicata alla distribuzione del totale pagato del movimento nelle relative scadenze associate.
|
* 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;
|
$is_nota = false;
|
||||||
$documento = $documento ?: $scadenza->documento;
|
|
||||||
|
|
||||||
if ($scadenza && empty($documento)) {
|
if ($scadenze) {
|
||||||
$scadenze = [$scadenza];
|
if (empty($documento)) {
|
||||||
$dir = $movimento->totale < 0 ? 'uscita' : 'entrata';
|
$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;
|
||||||
->where('totale', '>', 0)
|
foreach ($scadenze as $scadenza) {
|
||||||
->sum('totale');
|
$totale_da_distribuire += Movimento::where('id_scadenza', '=', $scadenza->id)
|
||||||
} elseif ($scadenza) {
|
|
||||||
$scadenze = [$scadenza];
|
|
||||||
$dir = $documento->direzione;
|
|
||||||
|
|
||||||
$totale_da_distribuire = Movimento::where('id_scadenza', '=', $scadenza->id)
|
|
||||||
->where('totale', '>', 0)
|
->where('totale', '>', 0)
|
||||||
->sum('totale');
|
->sum('totale');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Gestione delle scadenze di un documento
|
// Gestione delle scadenze di un documento
|
||||||
elseif ($documento) {
|
elseif ($documento) {
|
||||||
$dir = $documento->direzione;
|
$dir = $documento->direzione;
|
||||||
$scadenze = $documento->scadenze->sortBy('scadenza');
|
$scadenze = $documento->scadenze->sortBy('scadenza')->all();
|
||||||
|
|
||||||
$movimenti = $documento->movimentiContabili;
|
$movimenti = $documento->movimentiContabili;
|
||||||
|
|
||||||
|
@ -233,7 +239,8 @@ class Mastrino extends Model
|
||||||
// Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive
|
// Nel caso il pagamento superi la rata, devo distribuirlo sulle rate successive
|
||||||
|
|
||||||
foreach ($scadenze as $scadenza) {
|
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
|
// Nel caso in cui il totale da distribuire sia stato esaurito, imposta il pagato a zero
|
||||||
if ($totale_da_distribuire <= 0) {
|
if ($totale_da_distribuire <= 0) {
|
||||||
|
|
Loading…
Reference in New Issue