diff --git a/modules/interventi/bulk.php b/modules/interventi/bulk.php index 0b0cef053..0e01771ff 100644 --- a/modules/interventi/bulk.php +++ b/modules/interventi/bulk.php @@ -1,9 +1,12 @@ fetchArray("SELECT idanagrafica FROM in_interventi WHERE id='".$id_records[0]."'"); + + $idanagrafica = $rs_idanagrafica[0]['idanagrafica']; + $data = date('Y-m-d'); + $dir = 'entrata'; + $idtipodocumento = '2'; + + $numero = get_new_numerofattura($data); + + $numero_esterno = get_new_numerosecondariofattura($data); + $idconto = get_var('Conto predefinito fatture di vendita'); + + $campo = ($dir == 'entrata') ? 'idpagamento_vendite' : 'idpagamento_acquisti'; + + // Tipo di pagamento predefinito dall'anagrafica + $query = 'SELECT id FROM co_pagamenti WHERE id=(SELECT '.$campo.' AS pagamento FROM an_anagrafiche WHERE idanagrafica='.prepare($idanagrafica).')'; + $rs = $dbo->fetchArray($query); + $idpagamento = $rs[0]['id']; + + // Se la fattura è di vendita e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni + if ($dir == 'entrata' && $idpagamento == '') { + $idpagamento = get_var('Tipo di pagamento predefinito'); + } + + + $n_interventi = 0; + + //inserisco righe + for( $i=0; $ifetchArray($q); + + if (count($rs)>0){ + + //al primo ciclo preparo la fattura + if ($n_interventi == 0){ + //preparo fattura + $dbo->query('INSERT INTO co_documenti (numero, numero_esterno, idanagrafica, idconto, idtipodocumento, idpagamento, data, idstatodocumento, idsede) VALUES ('.prepare($numero).', '.prepare($numero_esterno).', '.prepare($idanagrafica).', '.prepare($idconto).', '.prepare($idtipodocumento).', '.prepare($idpagamento).', '.prepare($data).", (SELECT `id` FROM `co_statidocumento` WHERE `descrizione`='Bozza'), (SELECT idsede_fatturazione FROM an_anagrafiche WHERE idanagrafica=".prepare($idanagrafica).') )'); + $iddocumento = $dbo->lastInsertedID(); + } + + $n_interventi++; + + $subtot_consuntivo = $rs[0]['tot_ore_consuntivo'] + $rs[0]['tot_km_consuntivo']; + + //Calcolo sconto se è stato arrotondato il prezzo + $subtot = $subtot_consuntivo; + $sconto = 0; + + //Aggiungo un'eventuale sconto in base al listino del cliente + if( $prc_sconto < 0 ){ + $sconto += $subtot/100*abs($prc_sconto); + } + + $descrizione = "Intervento numero ".$rs[0]['id']." del ".date( "d/m/Y", strtotime($rs[0]['data']) )."\n".html_entity_decode ( $rs[0]['descrizione'] ); + + //Aggiunta impianti + $rsi = $dbo->fetchArray("SELECT * FROM my_impianti_interventi INNER JOIN my_impianti ON my_impianti.id=my_impianti_interventi.idimpianto WHERE idintervento=\"".$rs[0]['id']."\""); + if( sizeof($rsi) > 0 ){ + $descrizione .= "\nIMPIANTI:\n"; + + for( $b=0; $bfetchArray("SELECT mg_articoli.descrizione, mg_articoli.codice, mg_articoli.prezzo_vendita, mg_articoli_interventi.qta, mg_articoli_interventi.sconto FROM mg_articoli_interventi INNER JOIN mg_articoli ON mg_articoli_interventi.idarticolo=mg_articoli.id WHERE idintervento=\"".$rs[0]['id']."\""); + + if( sizeof($rsa) > 0 ){ + $descrizione .= "\nARTICOLI UTILIZZATI:\n"; + + for( $a=0; $afetchArray("SELECT descrizione, qta, prezzo_vendita FROM in_righe_interventi WHERE idintervento=\"".$rs[0]['id']."\""); + + if( sizeof($rsa) > 0 ){ + $descrizione .= "\nALTRI COSTI:\n"; + + for( $a=0; $afetchArray("SELECT idanagrafica, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento='".$rs[0]['id']."') AS data FROM `in_interventi` WHERE id='".$rs[0]['id']."'"); + $idanagrafica = $rs[0]['idanagrafica']; + $data = $rs[0]['data']; + + + //Calcolo iva + $idiva = get_var("Iva predefinita"); + $query = "SELECT * FROM co_iva WHERE id='".$idiva."'"; + $rs = $dbo->fetchArray($query); + + $iva = ($subtot-$sconto)/100*$rs[0]['percentuale']; + $iva_indetraibile = $iva/100*$rs[0]['indetraibile']; + $desc_iva = $rs[0]['descrizione']; + + //Calcolo rivalsa inps + $query = "SELECT * FROM co_rivalsainps WHERE id='".get_var("Percentuale rivalsa INPS")."'"; + $rs = $dbo->fetchArray($query); + $rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; + + //Calcolo ritenuta d'acconto + $query = "SELECT * FROM co_ritenutaacconto WHERE id='".get_var("Percentuale ritenuta d'acconto")."'"; + $rs = $dbo->fetchArray($query); + $ritenutaacconto = ($subtot+$rivalsainps) / 100 * $rs[0]['percentuale']; + + + //Aggiunta riga intervento sul documento + $query1 = "INSERT INTO co_righe_documenti( iddocumento, idintervento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto ) VALUES( \"$iddocumento\", \"$idintervento\", \"".$idiva."\", \"$desc_iva\", \"$iva\", \"$iva_indetraibile\", \"$descrizione\", \"$subtot\", \"".$sconto."\", \"ore\", \"1\", \"".get_var("Percentuale rivalsa INPS")."\", \"".$rivalsainps."\", \"".get_var("Percentuale ritenuta d'acconto")."\", \"".$ritenutaacconto."\" )"; + if( $dbo->query( $query1 ) ){ + + //Ricalcolo inps, ritenuta e bollo + if( $dir=='entrata' ){ + ricalcola_costiagg_fattura($iddocumento); + }else{ + ricalcola_costiagg_fattura($iddocumento, 0, 0, 0); + } + + //Metto l'intervento in stato "Fatturato" + $dbo->query("UPDATE in_interventi SET idstatointervento='FAT' WHERE id='$idintervento'"); + + } + + } + } + + + if ($n_interventi>0) { + + $_SESSION['infos'][] = tr('Fattura _NUM_ creata!', [ + '_NUM_' => $numero_esterno, + ]); + + $_SESSION['infos'][] = tr('_NUM_ interventi fatturati!', [ + '_NUM_' => $n_interventi, + ]); + + }else{ + $_SESSION['warnings'][] = tr('Nessuna attività fatturata!'); + } + + + break; } return [ - 'export-bulk' => [ + + 'export-bulk' => [ 'text' => tr('Esporta stampe'), 'data' => [ 'msg' => tr('Vuoi davvero esportare tutte le stampe in un archivio?'), @@ -64,4 +237,17 @@ return [ 'blank' => true, ], ], + + 'creafatturavendita' => [ + 'text' => tr('Crea fattura'), + 'data' => [ + 'msg' => tr('Vuoi davvero creare una fattura per questi interventi?'), + 'button' => tr('Procedi'), + 'class' => 'btn btn-lg btn-warning', + 'blank' => false, + ], + ], + ]; + +?> \ No newline at end of file