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');