diff --git a/include/common/importa.php b/include/common/importa.php
index d278cbb2d..2403bcd44 100644
--- a/include/common/importa.php
+++ b/include/common/importa.php
@@ -75,28 +75,15 @@ if (!empty($righe)) {
';
}
- echo '
-
-
';
-
- // Iva
- if ($original_module['name'] == 'Preventivi' || $original_module['name'] == 'Contratti') {
- echo '
-
- {[ "type": "select", "label": "'.tr('Iva').'", "name": "id_iva", "required": 1, "value": "'.$id_iva.'", "ajax-source": "iva" ]}
-
';
- }
-
// Conto
- if (($final_module['name'] == 'Fatture di vendita' || $final_module['name'] == 'Fatture di acquisto') && $op != 'nota_credito') {
+ if (($final_module['name'] == 'Fatture di vendita' || $final_module['name'] == 'Fatture di acquisto') && !($original_module['name'] == 'Fatture di vendita' || $original_module['name'] == 'Fatture di acquisto')) {
echo '
-
+
+
{[ "type": "select", "label": "'.tr('Conto').'", "name": "id_conto", "required": 1, "value": "'.$id_conto.'", "ajax-source": "'.($dir == 'entrata' ? 'conti-vendite' : 'conti-acquisti').'" ]}
-
';
- }
-
- echo '
+
';
+ }
echo '
diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php
index 9f13bb311..89ca330fc 100644
--- a/modules/ddt/actions.php
+++ b/modules/ddt/actions.php
@@ -214,19 +214,12 @@ switch (post('op')) {
}
$parziale = false;
-
- $id_iva = get('id_iva');
- $id_conto = get('id_conto');
$righe = $ordine->getRighe();
-
foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on') {
$qta = post('qta_da_evadere')[$riga->id];
$copia = $riga->copiaIn($ddt, $qta);
- $copia->id_conto = $id_conto;
-
- $copia->save();
// Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) {
@@ -236,6 +229,8 @@ switch (post('op')) {
$copia->serials = $serials;
}
+
+ $copia->save();
}
if ($riga->qta != $riga->qta_evasa) {
@@ -243,6 +238,15 @@ switch (post('op')) {
}
}
+ // Aggiornamento sconto
+ if (post('evadere')[$ordine->scontoGlobale->id] == 'on') {
+ $ddt->tipo_sconto_globale = $ordine->tipo_sconto_globale;
+ $ddt->sconto_globale = $ordine->tipo_sconto_globale == 'PRC' ? $ordine->sconto_globale : $ordine->sconto_globale;
+ $ddt->save();
+
+ $ddt->updateSconto();
+ }
+
// Impostazione del nuovo stato
$descrizione = $parziale ? 'Parzialmente evaso' : 'Evaso';
$stato = \Modules\Ordini\Stato::where('descrizione', $descrizione)->first();
@@ -470,71 +474,6 @@ switch (post('op')) {
}
break;
-
- // aggiungi righe da ordine
- case 'add_ordine':
- $idordine = post('iddocumento');
-
- // Lettura di tutte le righe della tabella in arrivo
- foreach (post('qta_da_evadere') as $i => $value) {
- // Processo solo le righe da evadere
- if (post('evadere')[$i] == 'on') {
- $idrigaordine = $i;
- $idarticolo = post('idarticolo')[$i];
- $descrizione = post('descrizione')[$i];
-
- $qta = post('qta_da_evadere')[$i];
- $um = post('um')[$i];
-
- $subtot = post('subtot')[$i] * $qta;
- $sconto = post('sconto')[$i];
- $sconto = $sconto * $qta;
-
- $qprc = 'SELECT tipo_sconto, sconto_unitario FROM or_righe_ordini WHERE id='.prepare($idrigaordine);
- $rsprc = $dbo->fetchArray($qprc);
-
- $sconto_unitario = $rsprc[0]['sconto_unitario'];
- $tipo_sconto = $rsprc[0]['tipo_sconto'];
-
- $idiva = post('idiva')[$i];
-
- // Calcolo l'iva indetraibile
- $q = 'SELECT percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva);
- $rs = $dbo->fetchArray($q);
- $iva = ($subtot - $sconto) / 100 * $rs[0]['percentuale'];
- $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile'];
-
- // Leggo la descrizione iva
- $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
- $rs = $dbo->fetchArray($query);
- $desc_iva = $rs[0]['descrizione'];
-
- // Se sto aggiungendo un articolo uso la funzione per inserirlo e incrementare la giacenza
- if (!empty($idarticolo)) {
- $idiva_acquisto = $idiva;
- $prezzo_acquisto = $subtot;
- $riga = add_articolo_inddt($id_record, $idarticolo, $descrizione, $idiva, $qta, $um, $prezzo_acquisto, $sconto, $sconto_unitario, $tipo_sconto);
-
- // Lettura lotto, serial, altro dalla riga dell'ordine
- $dbo->query('INSERT INTO mg_prodotti (id_riga_documento, id_articolo, dir, serial, lotto, altro) SELECT '.prepare($riga).', '.prepare($idarticolo).', '.prepare($dir).', serial, lotto, altro FROM mg_prodotti AS t WHERE id_riga_ordine='.prepare($idrigaordine));
- }
-
- // Inserimento riga normale
- elseif ($qta != 0) {
- $query = 'INSERT INTO dt_righe_ddt(idddt, idarticolo, descrizione, idordine, idiva, desc_iva, iva, iva_indetraibile, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, `order`) VALUES('.prepare($id_record).', '.prepare($idarticolo).', '.prepare($descrizione).', '.prepare($idordine).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($um).', '.prepare($qta).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))';
- $dbo->query($query);
- }
-
- // Scalo la quantità dall ordine
- $dbo->query('UPDATE or_righe_ordini SET qta_evasa = qta_evasa+'.$qta.' WHERE id='.prepare($idrigaordine));
- }
- }
-
- ricalcola_costiagg_ddt($id_record);
-
- flash()->info(tr('Aggiunti nuovi articoli in ddt!'));
-
- break;
}
// Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase
diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php
index 66b8d9a9c..1be71609a 100644
--- a/modules/fatture/actions.php
+++ b/modules/fatture/actions.php
@@ -651,7 +651,7 @@ switch (post('op')) {
$id_ritenuta_acconto = $fattura->anagrafica->id_ritenuta_acconto_vendite ?: setting("Percentuale ritenuta d'acconto");
}
$calcolo_ritenuta_acconto = setting("Metodologia calcolo ritenuta d'acconto predefinito");
- $id_conto = get('id_conto');
+ $id_conto = post('id_conto');
$parziale = false;
$righe = $ordine->getRighe();
@@ -666,8 +666,6 @@ switch (post('op')) {
$copia->id_ritenuta_acconto = $id_ritenuta_acconto;
$copia->id_rivalsa_inps = $id_rivalsa_inps;
- $copia->save();
-
// Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) {
$copia->movimenta($copia->qta);
@@ -676,6 +674,8 @@ switch (post('op')) {
$copia->serials = $serials;
}
+
+ $copia->save();
}
if ($riga->qta != $riga->qta_evasa) {
@@ -683,6 +683,15 @@ switch (post('op')) {
}
}
+ // Aggiornamento sconto
+ if (post('evadere')[$ordine->scontoGlobale->id] == 'on') {
+ $fattura->tipo_sconto_globale = $ordine->tipo_sconto_globale;
+ $fattura->sconto_globale = $ordine->tipo_sconto_globale == 'PRC' ? $ordine->sconto_globale : $ordine->sconto_globale;
+ $fattura->save();
+
+ $fattura->updateSconto();
+ }
+
// Impostazione del nuovo stato
$descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato';
$stato = \Modules\Ordini\Stato::where('descrizione', $descrizione)->first();
@@ -720,7 +729,7 @@ switch (post('op')) {
$id_ritenuta_acconto = $fattura->anagrafica->id_ritenuta_acconto_vendite ?: setting("Percentuale ritenuta d'acconto");
}
$calcolo_ritenuta_acconto = setting("Metodologia calcolo ritenuta d'acconto predefinito");
- $id_conto = get('id_conto');
+ $id_conto = post('id_conto');
$parziale = false;
$righe = $ddt->getRighe();
@@ -735,14 +744,14 @@ switch (post('op')) {
$copia->id_ritenuta_acconto = $id_ritenuta_acconto;
$copia->id_rivalsa_inps = $id_rivalsa_inps;
- $copia->save();
-
// Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) {
$serials = is_array(post('serial')[$riga->id]) ? post('serial')[$riga->id] : [];
$copia->serials = $serials;
}
+
+ $copia->save();
}
if ($riga->qta != $riga->qta_evasa) {
@@ -750,6 +759,15 @@ switch (post('op')) {
}
}
+ // Aggiornamento sconto
+ if (post('evadere')[$ddt->scontoGlobale->id] == 'on') {
+ $fattura->tipo_sconto_globale = $ddt->tipo_sconto_globale;
+ $fattura->sconto_globale = $ddt->tipo_sconto_globale == 'PRC' ? $ddt->sconto_globale : $ddt->sconto_globale;
+ $fattura->save();
+
+ $fattura->updateSconto();
+ }
+
// Impostazione del nuovo stato
$descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato';
$stato = \Modules\DDT\Stato::where('descrizione', $descrizione)->first();
@@ -787,7 +805,6 @@ switch (post('op')) {
}
$calcolo_ritenuta_acconto = setting("Metodologia calcolo ritenuta d'acconto predefinito");
$id_conto = post('id_conto');
- $id_iva = post('id_iva');
$parziale = false;
$righe = $preventivo->getRighe();
@@ -796,19 +813,18 @@ switch (post('op')) {
$qta = post('qta_da_evadere')[$riga->id];
$copia = $riga->copiaIn($fattura, $qta);
- $copia->idiva = $id_iva;
- $copia->idconto = $id_conto;
+ $copia->id_conto = $id_conto;
$copia->calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto;
$copia->id_ritenuta_acconto = $id_ritenuta_acconto;
$copia->id_rivalsa_inps = $id_rivalsa_inps;
- $copia->save();
-
// Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) {
$copia->movimenta($copia->qta);
}
+
+ $copia->save();
}
if ($riga->qta != $riga->qta_evasa) {
@@ -816,6 +832,15 @@ switch (post('op')) {
}
}
+ // Aggiornamento sconto
+ if (post('evadere')[$preventivo->scontoGlobale->id] == 'on') {
+ $fattura->tipo_sconto_globale = $preventivo->tipo_sconto_globale;
+ $fattura->sconto_globale = $preventivo->tipo_sconto_globale == 'PRC' ? $preventivo->sconto_globale : $preventivo->sconto_globale;
+ $fattura->save();
+
+ $fattura->updateSconto();
+ }
+
// Impostazione del nuovo stato
$descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato';
$stato = \Modules\Preventivi\Stato::where('descrizione', $descrizione)->first();
@@ -860,8 +885,7 @@ switch (post('op')) {
$id_ritenuta_acconto = $fattura->anagrafica->id_ritenuta_acconto_vendite ?: setting("Percentuale ritenuta d'acconto");
}
$calcolo_ritenuta_acconto = setting("Metodologia calcolo ritenuta d'acconto predefinito");
- $id_conto = get('id_conto');
- $id_iva = get('id_iva');
+ $id_conto = post('id_conto');
$parziale = false;
$righe = $contratto->getRighe();
@@ -870,19 +894,18 @@ switch (post('op')) {
$qta = post('qta_da_evadere')[$riga->id];
$copia = $riga->copiaIn($fattura, $qta);
- $copia->id_iva = $id_iva;
$copia->id_conto = $id_conto;
$copia->calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto;
$copia->id_ritenuta_acconto = $id_ritenuta_acconto;
$copia->id_rivalsa_inps = $id_rivalsa_inps;
- $copia->save();
-
// Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) {
$copia->movimenta($copia->qta);
}
+
+ $copia->save();
}
if ($riga->qta != $riga->qta_evasa) {
@@ -890,6 +913,15 @@ switch (post('op')) {
}
}
+ // Aggiornamento sconto
+ if (post('evadere')[$contratto->scontoGlobale->id] == 'on') {
+ $fattura->tipo_sconto_globale = $contratto->tipo_sconto_globale;
+ $fattura->sconto_globale = $contratto->tipo_sconto_globale == 'PRC' ? $contratto->sconto_globale : $contratto->sconto_globale;
+ $fattura->save();
+
+ $fattura->updateSconto();
+ }
+
// Impostazione del nuovo stato
$descrizione = $parziale ? 'Parzialmente fatturato' : 'Fatturato';
$stato = \Modules\Contratti\Stato::where('descrizione', $descrizione)->first();
@@ -936,8 +968,6 @@ switch (post('op')) {
$copia = $riga->copiaIn($nota, -$qta);
$copia->ref_riga_documento = $riga->id;
- $copia->save();
-
// Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) {
$copia->movimenta($copia->qta);
@@ -947,6 +977,8 @@ switch (post('op')) {
$copia->serials = $serials;
$riga->removeSerials($serials);
}
+
+ $copia->save();
}
}
diff --git a/modules/ordini/actions.php b/modules/ordini/actions.php
index 18285401b..334d88d9f 100644
--- a/modules/ordini/actions.php
+++ b/modules/ordini/actions.php
@@ -360,24 +360,19 @@ switch (post('op')) {
}
$parziale = false;
-
- $id_iva = post('id_iva');
- $id_conto = post('id_conto');
$righe = $preventivo->getRighe();
foreach ($righe as $riga) {
if (post('evadere')[$riga->id] == 'on') {
$qta = post('qta_da_evadere')[$riga->id];
$copia = $riga->copiaIn($ordine, $qta);
- $copia->idiva = $id_iva;
- $copia->id_conto = $id_conto;
-
- $copia->save();
// Aggiornamento seriali dalla riga dell'ordine
if ($copia->isArticolo()) {
$copia->movimenta($copia->qta);
}
+
+ $copia->save();
}
if ($riga->qta != $riga->qta_evasa) {
@@ -385,6 +380,15 @@ switch (post('op')) {
}
}
+ // Aggiornamento sconto
+ if (post('evadere')[$preventivo->scontoGlobale->id] == 'on') {
+ $ordine->tipo_sconto_globale = $preventivo->tipo_sconto_globale;
+ $ordine->sconto_globale = $preventivo->tipo_sconto_globale == 'PRC' ? $preventivo->sconto_globale : $preventivo->sconto_globale;
+ $ordine->save();
+
+ $ordine->updateSconto();
+ }
+
ricalcola_costiagg_ordine($id_record);
flash()->info(tr('Preventivo _NUM_ aggiunto!', [
diff --git a/update/2_4_8.sql b/update/2_4_8.sql
index c7e74d398..304de88ec 100644
--- a/update/2_4_8.sql
+++ b/update/2_4_8.sql
@@ -1,11 +1,6 @@
+-- Fix problema username vuoti in zz_logs
ALTER TABLE `zz_logs` CHANGE `username` `username` varchar(255);
-
-ALTER TABLE `dt_righe_ddt` ADD `id_conto` INT(11) NOT NULL AFTER `qta_evasa`;
-ALTER TABLE `co_righe_contratti` ADD `id_conto` INT(11) NOT NULL AFTER `qta_evasa`;
-ALTER TABLE `co_righe_preventivi` ADD `id_conto` INT(11) NOT NULL AFTER `qta_evasa`;
-ALTER TABLE `or_righe_ordini` ADD `id_conto` INT(11) NOT NULL AFTER `qta_evasa`;
-
-
+-- Aggiunta tipologia di documento Parcella
INSERT INTO `co_tipidocumento` (`id`, `descrizione`, `dir`, `reversed`, `codice_tipo_documento_fe`) VALUES (NULL, 'Parcella', 'entrata', '0', 'TD06');
-INSERT INTO `co_tipidocumento` (`id`, `descrizione`, `dir`, `reversed`, `codice_tipo_documento_fe`) VALUES (NULL, 'Parcella', 'uscita', '0', 'TD06');
\ No newline at end of file
+INSERT INTO `co_tipidocumento` (`id`, `descrizione`, `dir`, `reversed`, `codice_tipo_documento_fe`) VALUES (NULL, 'Parcella', 'uscita', '0', 'TD06');