1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-23 06:47:40 +01:00

Aggiunta scelta iva su materiale e altre spese nell'intervento

This commit is contained in:
Bacca97 2018-03-19 18:11:51 +01:00
parent e6e0675e20
commit 0a0c24663e
10 changed files with 144 additions and 25 deletions

View File

@ -404,7 +404,7 @@ switch (post('op')) {
// Collego in fattura eventuali articoli collegati all'intervento
$rs2 = $dbo->fetchArray('SELECT mg_articoli_interventi.*, idarticolo FROM mg_articoli_interventi INNER JOIN mg_articoli ON mg_articoli_interventi.idarticolo=mg_articoli.id WHERE idintervento='.prepare($idintervento).' AND (idintervento NOT IN(SELECT idintervento FROM co_righe_preventivi WHERE idpreventivo IN(SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) AND idintervento NOT IN(SELECT idintervento FROM co_righe_contratti WHERE idcontratto IN(SELECT idcontratto FROM co_righe_documenti WHERE iddocumento='.prepare($id_record).')) )');
for ($i = 0; $i < sizeof($rs2); ++$i) {
$riga = add_articolo_infattura($id_record, $rs2[$i]['idarticolo'], $rs2[$i]['descrizione'], $idiva, $rs2[$i]['qta'], $rs2[$i]['prezzo_vendita'] * $rs2[$i]['qta'], $rs2[$i]['sconto'], $rs2[$i]['sconto_unitario'], $rs2[$i]['tipo_sconto'], $idintervento, 0, $rs2[$i]['um']);
$riga = add_articolo_infattura($id_record, $rs2[$i]['idarticolo'], $rs2[$i]['descrizione'], $rs2[$i]['idiva'], $rs2[$i]['qta'], $rs2[$i]['prezzo_vendita'] * $rs2[$i]['qta'], $rs2[$i]['sconto'], $rs2[$i]['sconto_unitario'], $rs2[$i]['tipo_sconto'], $idintervento, 0, $rs2[$i]['um']);
// 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($rs2[$i]['idarticolo']).', '.prepare($dir).', serial, lotto, altro FROM mg_prodotti AS t WHERE id_riga_intervento='.prepare($rs2[$i]['id']));
@ -416,7 +416,7 @@ switch (post('op')) {
if (sizeof($rsr) > 0) {
for ($i = 0; $i < sizeof($rsr); ++$i) {
// Calcolo iva
$query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva);
$query = 'SELECT * FROM co_iva WHERE id='.prepare($rsr[$i]['idiva']);
$rs = $dbo->fetchArray($query);
$desc_iva = $rs[0]['descrizione'];

View File

@ -402,6 +402,7 @@ switch (post('op')) {
$descrizione = post('descrizione');
$qta = post('qta');
$um = post('um');
$idiva = post('idiva');
$prezzo_vendita = post('prezzo_vendita');
$prezzo_acquisto = post('prezzo_acquisto');
@ -410,7 +411,13 @@ switch (post('op')) {
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_vendita * $sconto_unitario) / 100 : $sconto_unitario;
$sconto = $sconto * $qta;
$dbo->query('INSERT INTO in_righe_interventi(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idintervento) VALUES ('.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($id_record).')');
//Calcolo iva
$rs_iva = $dbo->fetchArray("SELECT * FROM co_iva WHERE id=".prepare($idiva)."");
$desc_iva = $rs_iva[0]['descrizione'];
$iva = (($prezzo_vendita*$qta)-$sconto)*$rs_iva[0]['percentuale']/100;
$dbo->query('INSERT INTO in_righe_interventi(descrizione, qta, um, prezzo_vendita, prezzo_acquisto, idiva, desc_iva, iva, sconto, sconto_unitario, tipo_sconto, idintervento) VALUES ('.prepare($descrizione).', '.prepare($qta).', '.prepare($um).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($id_record).')');
break;
@ -419,6 +426,7 @@ switch (post('op')) {
$descrizione = post('descrizione');
$qta = post('qta');
$um = post('um');
$idiva = post('idiva');
$prezzo_vendita = post('prezzo_vendita');
$prezzo_acquisto = post('prezzo_acquisto');
@ -427,12 +435,21 @@ switch (post('op')) {
$sconto = ($tipo_sconto == 'PRC') ? ($prezzo_vendita * $sconto_unitario) / 100 : $sconto_unitario;
$sconto = $sconto * $qta;
//Calcolo iva
$rs_iva = $dbo->fetchArray("SELECT * FROM co_iva WHERE id=".prepare($idiva)."");
$desc_iva = $rs_iva[0]['descrizione'];
$iva = (($prezzo_vendita*$qta)-$sconto)*$rs_iva[0]['percentuale']/100;
$dbo->query('UPDATE in_righe_interventi SET '.
' descrizione='.prepare($descrizione).','.
' qta='.prepare($qta).','.
' um='.prepare($um).','.
' prezzo_vendita='.prepare($prezzo_vendita).','.
' prezzo_acquisto='.prepare($prezzo_acquisto).','.
' idiva='.prepare($idiva).','.
' desc_iva='.prepare($desc_iva).','.
' iva='.prepare($iva).','.
' sconto='.prepare($sconto).','.
' sconto_unitario='.prepare($sconto_unitario).','.
' tipo_sconto='.prepare($tipo_sconto).
@ -487,6 +504,7 @@ switch (post('op')) {
$qta = post('qta');
$um = post('um');
$prezzo_vendita = post('prezzo_vendita');
$idiva = post('idiva');
$sconto_unitario = $post['sconto'];
$tipo_sconto = $post['tipo_sconto'];
@ -502,8 +520,14 @@ switch (post('op')) {
$rsart = $dbo->fetchArray('SELECT abilita_serial, prezzo_acquisto FROM mg_articoli WHERE id='.prepare($idarticolo));
$prezzo_acquisto = $rsart[0]['prezzo_acquisto'];
//Calcolo iva
$rs_iva = $dbo->fetchArray("SELECT * FROM co_iva WHERE id=".prepare($idiva)."");
$desc_iva = $rs_iva[0]['descrizione'];
$iva = (($prezzo_vendita*$qta)-$sconto)*$rs_iva[0]['percentuale']/100;
// Aggiunto il collegamento fra l'articolo e l'intervento
$idriga = $dbo->query('INSERT INTO mg_articoli_interventi(idarticolo, idintervento, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva_vendita, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($idautomezzo).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', (SELECT idiva_vendita FROM mg_articoli WHERE id='.prepare($idarticolo).'), '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
$idriga = $dbo->query('INSERT INTO mg_articoli_interventi(idarticolo, idintervento, idimpianto, idautomezzo, descrizione, prezzo_vendita, prezzo_acquisto, sconto, sconto_unitario, tipo_sconto, idiva, desc_iva, iva, qta, um, abilita_serial) VALUES ('.prepare($idarticolo).', '.prepare($id_record).', '.(empty($idimpianto) ? 'NULL' : prepare($idimpianto)).', '.prepare($idautomezzo).', '.prepare($descrizione).', '.prepare($prezzo_vendita).', '.prepare($prezzo_acquisto).', '.prepare($sconto).', '.prepare($sconto_unitario).', '.prepare($tipo_sconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($qta).', '.prepare($um).', '.prepare($rsart[0]['abilita_serial']).')');
if (!empty($serials)) {
if ($old_qta > $qta) {

View File

@ -50,6 +50,7 @@ if (empty($idriga)) {
$descrizione = $rsr[0]['descrizione'];
$qta = $rsr[0]['qta'];
$um = $rsr[0]['um'];
$idiva = $rsr[0]['idiva'];
$prezzo_vendita = $rsr[0]['prezzo_vendita'];
@ -112,16 +113,22 @@ echo '
</div>
</div>';
// Prezzo di vendita
// Iva
echo '
<div class="row">
<div class="col-md-6">
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC" ]}
</div>';
// Prezzo di vendita
echo '
<div class="col-md-4">
{[ "type": "number", "label": "'.tr('Costo unitario').'", "name": "prezzo_vendita", "required": 1, "value": "'.$prezzo_vendita.'", "icon-after": "&euro;" ]}
</div>';
// Sconto
echo '
<div class="col-md-6">
<div class="col-md-4">
{[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc|'.$tipo_sconto.'", "value": "'.$sconto_unitario.'" ]}
</div>
</div>';
@ -165,6 +172,7 @@ echo '
$("#prezzo_vendita").val($data.prezzo_vendita);
$("#descrizione_articolo").val($data.descrizione);
$("#idiva").selectSet($data.idiva_vendita, $data.iva_vendita);
$("#um").selectSetNew($data.um, $data.um);
}else{
$("#prezzi_articolo button").addClass("disabled");

View File

@ -35,6 +35,7 @@ if (empty($idriga)) {
$descrizione = $rsr[0]['descrizione'];
$qta = $rsr[0]['qta'];
$um = $rsr[0]['um'];
$idiva = $rsr[0]['idiva'];
$prezzo_vendita = $rsr[0]['prezzo_vendita'];
$prezzo_acquisto = $rsr[0]['prezzo_acquisto'];
@ -70,6 +71,12 @@ echo '
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Unità di misura').'", "icon-after": "add|'.Modules::get('Unità di misura')['id'].'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]}
</div>';
// Iva
echo '
<div class="col-md-4">
{[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC" ]}
</div>
</div>';

View File

@ -22,7 +22,8 @@ if (!empty($rs)) {
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
echo '
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="15%">'.tr('Subtotale').'</th>';
<th width="10%">'.tr('Iva').'</th>
<th width="15%">'.tr('Imponibile').'</th>';
}
if ( !$records[0]['flg_completato'] ) {
@ -100,6 +101,12 @@ if (!empty($rs)) {
echo '
</td>';
echo '
<td class="text-right">
<span>'.Translator::numberToLocale($r['iva']).'</span> &euro;';
echo '
</td>';
// Prezzo di vendita
echo '
<td class="text-right">

View File

@ -76,22 +76,22 @@ if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
<th>'.tr('Imponibile', [], ['upper' => true]).'</th>
<td class="text-right">'.Translator::numberToLocale($costi['totale_costo']).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale($costi['totale_addebito']).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale($costi['totale']).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale($costi['totale_scontato']).' &euro;</td>
</tr>
<tr class='.$hide.' >
<th>'.tr('IVA (_DESC_)', [ _DESC_ => $rs_iva[0]['descrizione']], ['upper' => true]).'</th>
<td class="text-right">'.Translator::numberToLocale(($costi['totale_costo']/100*$rs_iva[0]['percentuale'])).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale(($costi['totale_addebito']/100*$rs_iva[0]['percentuale'])).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale(($costi['totale']/100*$rs_iva[0]['percentuale'])).' &euro;</td>
<th>'.tr('IVA', [], ['upper' => true]).'</th>
<td class="text-right">'.Translator::numberToLocale($costi['iva_costo']).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale($costi['iva_addebito']).' &euro;</td>
<td class="text-right">'.Translator::numberToLocale($costi['iva_totale']).' &euro;</td>
</tr>
<tr>
<th>'.tr('Totale', [], ['upper' => true]).'</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale_costo']+($costi['totale_costo']/100*$rs_iva[0]['percentuale'])).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale_addebito']+($costi['totale_addebito']/100*$rs_iva[0]['percentuale'])).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale']+($costi['totale']/100*$rs_iva[0]['percentuale'])).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totaleivato_costo']).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totaleivato_addebito']).' &euro;</th>
<th class="text-right">'.Translator::numberToLocale($costi['totale']).' &euro;</th>
</tr>
</table>';
}

View File

@ -16,6 +16,7 @@ if (count($rs2) > 0) {
if (Auth::admin() || $_SESSION['gruppo'] != 'Tecnici') {
echo '
<th width="15%">'.tr('Prezzo di vendita').'</th>
<th width="10%">'.tr('Iva').'</th>
<th width="15%">'.tr('Subtotale').'</th>';
}
@ -67,6 +68,12 @@ if (count($rs2) > 0) {
echo '
</td>';
echo '
<td class="text-right">
<span>'.Translator::numberToLocale($r['iva']).'</span> &euro;';
echo '
</td>';
// Prezzo di vendita
echo '
<td class="text-right">

View File

@ -162,6 +162,9 @@ function get_costi_intervento($id_intervento)
$decimals = Settings::get('Cifre decimali per importi');
$idiva = get_var('Iva predefinita');
$rs_iva = $dbo->fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva));
$tecnici = $dbo->fetchArray('SELECT
COALESCE(SUM(
ROUND(prezzo_ore_consuntivo_tecnico, '.$decimals.')
@ -204,7 +207,10 @@ function get_costi_intervento($id_intervento)
), 0) AS ricambi_addebito,
COALESCE(SUM(
ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') - ROUND(sconto, '.$decimals.')
), 0) AS ricambi_scontato
), 0) AS ricambi_scontato,
ROUND(
(SELECT percentuale FROM co_iva WHERE co_iva.id=mg_articoli_interventi.idiva), '.$decimals.'
) AS ricambi_iva
FROM mg_articoli_interventi WHERE idintervento='.prepare($id_intervento));
@ -217,7 +223,10 @@ function get_costi_intervento($id_intervento)
), 0) AS altro_addebito,
COALESCE(SUM(
ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') - ROUND(sconto, '.$decimals.')
), 0) AS altro_scontato
), 0) AS altro_scontato,
ROUND(
(SELECT percentuale FROM co_iva WHERE co_iva.id=in_righe_interventi.idiva), '.$decimals.'
) AS altro_iva
FROM in_righe_interventi WHERE idintervento='.prepare($id_intervento));
@ -247,12 +256,62 @@ function get_costi_intervento($id_intervento)
$result['altro_scontato'],
]);
$result['iva_costo'] = sum([
$result['manodopera_costo']*$rs_iva[0]['percentuale']/100,
$result['dirittochiamata_costo']*$rs_iva[0]['percentuale']/100,
$result['viaggio_costo']*$rs_iva[0]['percentuale']/100,
$result['ricambi_costo']*$result['ricambi_iva']/100,
$result['altro_costo']*$result['altro_iva']/100,
]);
$result['iva_addebito'] = sum([
$result['manodopera_addebito']*$rs_iva[0]['percentuale']/100,
$result['dirittochiamata_addebito']*$rs_iva[0]['percentuale']/100,
$result['viaggio_addebito']*$rs_iva[0]['percentuale']/100,
$result['ricambi_addebito']*$result['ricambi_iva']/100,
$result['altro_addebito']*$result['altro_iva']/100,
]);
$result['iva_totale'] = sum([
$result['manodopera_scontato']*$rs_iva[0]['percentuale']/100,
$result['dirittochiamata_scontato']*$rs_iva[0]['percentuale']/100,
$result['viaggio_scontato']*$rs_iva[0]['percentuale']/100,
$result['ricambi_scontato']*$result['ricambi_iva']/100,
$result['altro_scontato']*$result['altro_iva']/100,
]);
$result['totaleivato_costo'] = sum([
$result['manodopera_costo']+($result['manodopera_costo']*$rs_iva[0]['percentuale']/100),
$result['dirittochiamata_costo']+($result['dirittochiamata_costo']*$rs_iva[0]['percentuale']/100),
$result['viaggio_costo']+($result['viaggio_costo']*$rs_iva[0]['percentuale']/100),
$result['ricambi_costo']+($result['ricambi_costo']*$result['ricambi_iva']/100),
$result['altro_costo']+($result['altro_costo']*$result['altro_iva']/100),
]);
$result['totaleivato_addebito'] = sum([
$result['manodopera_addebito']+($result['manodopera_addebito']*$rs_iva[0]['percentuale']/100),
$result['dirittochiamata_addebito']+($result['dirittochiamata_addebito']*$rs_iva[0]['percentuale']/100),
$result['viaggio_addebito']+($result['viaggio_addebito']*$rs_iva[0]['percentuale']/100),
$result['ricambi_addebito']+($result['ricambi_addebito']*$result['ricambi_iva']/100),
$result['altro_addebito']+($result['altro_addebito']*$result['altro_iva']/100),
]);
$result['totale'] = sum([
$result['manodopera_scontato']+($result['manodopera_scontato']*$rs_iva[0]['percentuale']/100),
$result['dirittochiamata_scontato']+($result['dirittochiamata_scontato']*$rs_iva[0]['percentuale']/100),
$result['viaggio_scontato']+($result['viaggio_scontato']*$rs_iva[0]['percentuale']/100),
$result['ricambi_scontato']+($result['ricambi_scontato']*$result['ricambi_iva']/100),
$result['altro_scontato']+($result['altro_scontato']*$result['altro_iva']/100),
]);
// Calcolo dello sconto incondizionato
$sconto = $dbo->fetchArray('SELECT sconto_globale, tipo_sconto_globale FROM in_interventi WHERE id='.prepare($id_intervento))[0];
$result['sconto_globale'] = ($sconto['tipo_sconto_globale'] == 'PRC') ? $result['totale_scontato'] * $sconto['sconto_globale'] / 100 : $sconto['sconto_globale'];
$result['sconto_globale'] = ($sconto['tipo_sconto_globale'] == 'PRC') ? $result['totale'] * $sconto['sconto_globale'] / 100 : $sconto['sconto_globale'];
$result['sconto_globale'] = round($result['sconto_globale'], $decimals);
$result['totale'] = sum($result['totale_scontato'], -$result['sconto_globale']);
$result['totale_scontato'] = sum($result['totale_scontato'], -$result['sconto_globale']);
$result['iva_totale'] = sum($result['iva_totale'], -($result['sconto_globale']*$rs_iva[0]['percentuale']/100));
$result['totale'] = sum($result['totale'], -($result['sconto_globale']+($result['sconto_globale']*$rs_iva[0]['percentuale']/100)));
return $result;
}

View File

@ -176,7 +176,7 @@ echo '
<input type="hidden" name="backto" value="record-edit">
<div class="row">
<div class="col-xs-12 col-md-6">
{[ "type": "select", "name": "matricole[]", "multiple": 1, "value": "'.implode(',', $impianti).'", "values": "query=SELECT my_impianti.id, CONCAT(matricola, \' - \', nome) AS descrizione, CONCAT(nomesede, IF(my_impianti.citta IS NULL OR my_impianti.citta = \'\', \'\', CONCAT(\' (\', my_impianti.citta, \')\'))) AS optgroup FROM my_impianti JOIN (SELECT id, nomesede, citta FROM an_sedi UNION SELECT 0, \'Sede legale\', \'\') AS t ON t.id = my_impianti.idsede WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' ORDER BY idsede ASC, matricola ASC", "extra": "'.$readonly.'" ]}
{[ "type": "select", "name": "matricole[]", "multiple": 1, "value": "'.implode(',', $impianti).'", "values": "query=SELECT my_impianti.id, CONCAT(matricola, \' - \', nome) AS descrizione, CONCAT(nomesede, IF(citta IS NULL OR citta = \'\', \'\', CONCAT(\' (\', citta, \')\'))) AS optgroup FROM my_impianti JOIN (SELECT id, nomesede, citta FROM an_sedi UNION SELECT 0 AS id, \'Sede legale\' AS nomesede, \'\' AS citta) AS t ON t.id = my_impianti.idsede WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' ORDER BY idsede ASC, matricola ASC", "extra": "'.$readonly.'" ]}
</div>
</div>
<br><br>

View File

@ -1,2 +1,9 @@
-- Lo stato 'FAT' è da considerarsi completato
UPDATE `in_statiintervento` SET `completato` = '1' WHERE `in_statiintervento`.`idstatointervento` = 'FAT';
-- Nuovi campi per iva su righe 'Materiale utilizzato' in interventi
ALTER TABLE `mg_articoli_interventi` CHANGE `idiva_vendita` `idiva` INT(11) NOT NULL;
ALTER TABLE `mg_articoli_interventi` ADD `desc_iva` VARCHAR(255) NOT NULL AFTER `idiva`, ADD `iva` DECIMAL(12,4) NOT NULL AFTER `desc_iva`;
-- Nuovi campi per iva su righe 'Altre spese' in interventi
ALTER TABLE `in_righe_interventi` ADD `idiva` INT(11) NOT NULL AFTER `prezzo_acquisto`, ADD `desc_iva` VARCHAR(255) NOT NULL AFTER `idiva`, ADD `iva` DECIMAL(12,4) NOT NULL AFTER `desc_iva`;