mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-02 17:07:01 +01:00
Miglioramento duplicazioni
This commit is contained in:
parent
3bfbb0acab
commit
6e28fcb6a3
@ -143,7 +143,7 @@ abstract class Row extends Description
|
||||
$this->prezzo_unitario_vendita_riga = $this->attributes['subtotale'] / $this->qta;
|
||||
}
|
||||
|
||||
return !is_nan($this->prezzo_unitario_vendita_riga) ? $this->prezzo_unitario_vendita_riga : 0;
|
||||
return !is_nan($this->prezzo_unitario_vendita_riga) ? $this->prezzo_unitario_vendita_riga : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -117,12 +117,9 @@ switch (post('op')) {
|
||||
|
||||
// Duplica articolo
|
||||
case 'copy':
|
||||
$dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM mg_articoli WHERE id = '.prepare($id_record));
|
||||
$dbo->query('ALTER TABLE tmp DROP id');
|
||||
$dbo->query('INSERT INTO mg_articoli SELECT NULL,tmp.* FROM tmp');
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
$dbo->query('DROP TEMPORARY TABLE tmp');
|
||||
$dbo->query('UPDATE mg_articoli SET qta=0 WHERE id='.prepare($id_record));
|
||||
$new = $articolo->replicate();
|
||||
$new->qta = 0;
|
||||
$new->save();
|
||||
|
||||
flash()->info(tr('Articolo duplicato correttamente!'));
|
||||
|
||||
|
@ -2,6 +2,10 @@
|
||||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
use Modules\Articoli\Articolo;
|
||||
|
||||
if (isset($id_record)) {
|
||||
$record = $dbo->fetchOne('SELECT *, (SELECT COUNT(id) FROM mg_prodotti WHERE id_articolo = mg_articoli.id) AS serial FROM mg_articoli WHERE id='.prepare($id_record));
|
||||
|
||||
$articolo = Articolo::find($id_record);
|
||||
}
|
||||
|
@ -129,26 +129,20 @@ switch (post('op')) {
|
||||
|
||||
// Duplica contratto
|
||||
case 'copy':
|
||||
$dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM co_contratti WHERE id = '.prepare($id_record));
|
||||
$dbo->query('ALTER TABLE tmp DROP id');
|
||||
$dbo->query('INSERT INTO co_contratti SELECT NULL,tmp.* FROM tmp');
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
$dbo->query('DROP TEMPORARY TABLE tmp');
|
||||
$new = $contratto->replicate();
|
||||
$new->idstato = 1;
|
||||
$new->save();
|
||||
|
||||
// Codice contratto: calcolo il successivo in base al formato specificato
|
||||
$numero = Contratto::getNextNumero();
|
||||
$id_record = $new->id;
|
||||
|
||||
$dbo->query('UPDATE co_contratti SET idstato=1, numero = '.prepare($numero).' WHERE id='.prepare($id_record));
|
||||
$righe = $preventivo->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$new_riga = $riga->replicate();
|
||||
$new_riga->setParent($new);
|
||||
|
||||
//copio anche le righe del preventivo
|
||||
$dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM co_righe_contratti WHERE idcontratto = '.filter('id_record'));
|
||||
$dbo->query('ALTER TABLE tmp DROP id');
|
||||
$dbo->query('UPDATE tmp SET idcontratto = '.prepare($id_record));
|
||||
$dbo->query('INSERT INTO co_righe_contratti SELECT NULL,tmp.* FROM tmp');
|
||||
$dbo->query('DROP TEMPORARY TABLE tmp');
|
||||
|
||||
//Azzero eventuale quantità evasa
|
||||
$dbo->query('UPDATE co_righe_contratti SET qta_evasa=0 WHERE id='.prepare($id_record));
|
||||
$new_riga->qta_evasa = 0;
|
||||
$new_riga->save();
|
||||
}
|
||||
|
||||
flash()->info(tr('Contratto duplicato correttamente!'));
|
||||
|
||||
|
@ -450,7 +450,7 @@ function get_new_idmastrino($table = 'co_movimenti')
|
||||
/**
|
||||
* Ricalcola i costi aggiuntivi in fattura (rivalsa inps, ritenuta d'acconto, marca da bollo)
|
||||
* Deve essere eseguito ogni volta che si aggiunge o toglie una riga
|
||||
* $iddocumento int ID della fattura
|
||||
* $iddocumento int ID della fattura.
|
||||
*/
|
||||
function ricalcola_costiagg_fattura($iddocumento)
|
||||
{
|
||||
|
@ -381,55 +381,6 @@ class Fattura extends Document
|
||||
{
|
||||
database()->delete('co_scadenziario', ['iddocumento' => $this->id]);
|
||||
}
|
||||
|
||||
protected function calcolaMarcaDaBollo(){
|
||||
$righe_bollo = $this->getRighe()->filter(function ($item, $key) {
|
||||
return $item->aliquota != null && in_array($item->aliquota->codice_natura_fe, ['N1', 'N2', 'N3', 'N4']);
|
||||
});
|
||||
$importo_righe_bollo = $righe_bollo->sum('netto');
|
||||
|
||||
// Leggo la marca da bollo se c'è e se il netto a pagare supera la soglia
|
||||
$bollo = ($this->direzione == 'uscita') ? $this->bollo : setting('Importo marca da bollo');
|
||||
|
||||
$marca_da_bollo = 0;
|
||||
if (abs($bollo) > 0 && abs($importo_righe_bollo) > setting("Soglia minima per l'applicazione della marca da bollo")) {
|
||||
$marca_da_bollo = $bollo;
|
||||
}
|
||||
|
||||
// Se l'importo è negativo può essere una nota di credito, quindi cambio segno alla marca da bollo
|
||||
$marca_da_bollo = abs($marca_da_bollo);
|
||||
|
||||
$this->bollo = $marca_da_bollo;
|
||||
|
||||
$riga = $this->rigaBollo;
|
||||
|
||||
// Rimozione riga bollo se nullo
|
||||
if (empty($this->addebita_bollo) || empty($marca_da_bollo) ){
|
||||
if (!empty($riga)){
|
||||
$this->id_riga_bollo = null;
|
||||
|
||||
$riga->delete();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Creazione riga bollo se non presente
|
||||
if(empty($riga)){
|
||||
$riga = Components\Riga::build($this);
|
||||
$riga->save();
|
||||
|
||||
$this->id_riga_bollo = $riga->id;
|
||||
}
|
||||
|
||||
$riga->prezzo_unitario_vendita = $marca_da_bollo;
|
||||
$riga->qta = 1;
|
||||
$riga->descrizione = setting('Descrizione addebito bollo');
|
||||
$riga->id_iva = setting('Iva da applicare su marca da bollo');
|
||||
$riga->idconto = setting('Conto predefinito per la marca da bollo');
|
||||
|
||||
$riga->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Salva la fattura, impostando i campi dipendenti dai singoli parametri.
|
||||
@ -451,7 +402,6 @@ class Fattura extends Document
|
||||
return parent::save($options);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Restituisce l'elenco delle note di credito collegate.
|
||||
*
|
||||
@ -537,4 +487,54 @@ class Fattura extends Document
|
||||
|
||||
return $numero;
|
||||
}
|
||||
|
||||
protected function calcolaMarcaDaBollo()
|
||||
{
|
||||
$righe_bollo = $this->getRighe()->filter(function ($item, $key) {
|
||||
return $item->aliquota != null && in_array($item->aliquota->codice_natura_fe, ['N1', 'N2', 'N3', 'N4']);
|
||||
});
|
||||
$importo_righe_bollo = $righe_bollo->sum('netto');
|
||||
|
||||
// Leggo la marca da bollo se c'è e se il netto a pagare supera la soglia
|
||||
$bollo = ($this->direzione == 'uscita') ? $this->bollo : setting('Importo marca da bollo');
|
||||
|
||||
$marca_da_bollo = 0;
|
||||
if (abs($bollo) > 0 && abs($importo_righe_bollo) > setting("Soglia minima per l'applicazione della marca da bollo")) {
|
||||
$marca_da_bollo = $bollo;
|
||||
}
|
||||
|
||||
// Se l'importo è negativo può essere una nota di credito, quindi cambio segno alla marca da bollo
|
||||
$marca_da_bollo = abs($marca_da_bollo);
|
||||
|
||||
$this->bollo = $marca_da_bollo;
|
||||
|
||||
$riga = $this->rigaBollo;
|
||||
|
||||
// Rimozione riga bollo se nullo
|
||||
if (empty($this->addebita_bollo) || empty($marca_da_bollo)) {
|
||||
if (!empty($riga)) {
|
||||
$this->id_riga_bollo = null;
|
||||
|
||||
$riga->delete();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Creazione riga bollo se non presente
|
||||
if (empty($riga)) {
|
||||
$riga = Components\Riga::build($this);
|
||||
$riga->save();
|
||||
|
||||
$this->id_riga_bollo = $riga->id;
|
||||
}
|
||||
|
||||
$riga->prezzo_unitario_vendita = $marca_da_bollo;
|
||||
$riga->qta = 1;
|
||||
$riga->descrizione = setting('Descrizione addebito bollo');
|
||||
$riga->id_iva = setting('Iva da applicare su marca da bollo');
|
||||
$riga->idconto = setting('Conto predefinito per la marca da bollo');
|
||||
|
||||
$riga->save();
|
||||
}
|
||||
}
|
||||
|
@ -99,26 +99,21 @@ switch (post('op')) {
|
||||
|
||||
// Duplica preventivo
|
||||
case 'copy':
|
||||
$dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM co_preventivi WHERE id = '.prepare($id_record));
|
||||
$dbo->query('ALTER TABLE tmp DROP id');
|
||||
$dbo->query('INSERT INTO co_preventivi SELECT NULL,tmp.* FROM tmp');
|
||||
$id_record = $dbo->lastInsertedID();
|
||||
$dbo->query('DROP TEMPORARY TABLE tmp');
|
||||
$new = $preventivo->replicate();
|
||||
$new->idstato = 1;
|
||||
$new->master_revision = $preventivo->id;
|
||||
$new->save();
|
||||
|
||||
// Codice preventivo: calcolo il successivo in base al formato specificato
|
||||
$numero = Preventivo::getNextNumero();
|
||||
$id_record = $new->id;
|
||||
|
||||
$dbo->query('UPDATE co_preventivi SET idstato=1, numero = '.prepare($numero).', master_revision = id WHERE id='.prepare($id_record));
|
||||
$righe = $preventivo->getRighe();
|
||||
foreach ($righe as $riga) {
|
||||
$new_riga = $riga->replicate();
|
||||
$new_riga->setParent($new);
|
||||
|
||||
//copio anche le righe del preventivo
|
||||
$dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM co_righe_preventivi WHERE idpreventivo = '.filter('id_record'));
|
||||
$dbo->query('ALTER TABLE tmp DROP id');
|
||||
$dbo->query('UPDATE tmp SET idpreventivo = '.prepare($id_record));
|
||||
$dbo->query('INSERT INTO co_righe_preventivi SELECT NULL,tmp.* FROM tmp');
|
||||
$dbo->query('DROP TEMPORARY TABLE tmp');
|
||||
|
||||
//Azzero eventuale quantità evasa
|
||||
$dbo->query('UPDATE co_righe_preventivi SET qta_evasa=0 WHERE id='.prepare($id_record));
|
||||
$new_riga->qta_evasa = 0;
|
||||
$new_riga->save();
|
||||
}
|
||||
|
||||
flash()->info(tr('Preventivo duplicato correttamente!'));
|
||||
|
||||
|
@ -99,5 +99,4 @@ switch (filter('op')) {
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ if (!empty($list)) {
|
||||
<button type="button" class="btn btn-danger" onclick="delete_fe(this, \''.$element.'\')">
|
||||
<i class="fa fa-trash"></i>
|
||||
</button>';
|
||||
}else{
|
||||
} else {
|
||||
echo '
|
||||
<button type="button" class="btn btn-info" onclick="process_fe(this, \''.$element.'\')">
|
||||
<i class="fa fa-upload"></i>
|
||||
@ -87,8 +87,8 @@ function download(button, file) {
|
||||
|
||||
function delete_fe(button, file) {
|
||||
swal({
|
||||
title: "'.tr("Rimuovere la fattura salvata localmente?").'",
|
||||
html: "'.tr("Sarà possibile inserirla nuovamente nel gestionale attraverso il caricamento").'",
|
||||
title: "'.tr('Rimuovere la fattura salvata localmente?').'",
|
||||
html: "'.tr('Sarà possibile inserirla nuovamente nel gestionale attraverso il caricamento').'",
|
||||
type: "error",
|
||||
showCancelButton: true,
|
||||
confirmButtonText: "'.tr('Sì').'"
|
||||
@ -100,12 +100,12 @@ function delete_fe(button, file) {
|
||||
type: "get",
|
||||
data: {
|
||||
id_module: globals.id_module,
|
||||
id_plugin: ' . $id_plugin . ',
|
||||
id_plugin: '.$id_plugin.',
|
||||
op: "delete",
|
||||
name: file,
|
||||
},
|
||||
success: function(data) {
|
||||
$("#list").load("' . $structure->fileurl('list.php') . '?id_module=' . $id_module . '&id_plugin=' . $id_plugin . '", function() {
|
||||
$("#list").load("'.$structure->fileurl('list.php').'?id_module='.$id_module.'&id_plugin='.$id_plugin.'", function() {
|
||||
buttonRestore(button, restore);
|
||||
});
|
||||
}
|
||||
@ -115,7 +115,7 @@ function delete_fe(button, file) {
|
||||
|
||||
function process_fe(button, file) {
|
||||
swal({
|
||||
title: "'.tr("Segnare la fattura come processata?").'",
|
||||
title: "'.tr('Segnare la fattura come processata?').'",
|
||||
html: "'.tr("Non sarà possibile individuarla nuovamente in modo automatico: l'unico modo per recuperarla sarà contattare l'assistenza").'",
|
||||
type: "info",
|
||||
showCancelButton: true,
|
||||
|
Loading…
x
Reference in New Issue
Block a user