This commit is contained in:
Thomas Zilio 2019-02-26 21:20:05 +01:00
parent c527a8630e
commit d943531a42
5 changed files with 80 additions and 123 deletions

View File

@ -75,28 +75,15 @@ if (!empty($righe)) {
</div>';
}
echo '
<div class="row">';
// Iva
if ($original_module['name'] == 'Preventivi' || $original_module['name'] == 'Contratti') {
echo '
<div class="col-md-6">
{[ "type": "select", "label": "'.tr('Iva').'", "name": "id_iva", "required": 1, "value": "'.$id_iva.'", "ajax-source": "iva" ]}
</div>';
}
// 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 '
<div class="col-md-6">
<div class="row">
<div class="col-md-12">
{[ "type": "select", "label": "'.tr('Conto').'", "name": "id_conto", "required": 1, "value": "'.$id_conto.'", "ajax-source": "'.($dir == 'entrata' ? 'conti-vendite' : 'conti-acquisti').'" ]}
</div>';
}
echo '
</div>
</div>';
}
echo '
<div class="clearfix"></div>

View File

@ -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

View File

@ -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();
}
}

View File

@ -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!', [

View File

@ -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');
INSERT INTO `co_tipidocumento` (`id`, `descrizione`, `dir`, `reversed`, `codice_tipo_documento_fe`) VALUES (NULL, 'Parcella', 'uscita', '0', 'TD06');