form('op', 'post') ){ case "add": $idanagrafica = save( $_POST['idanagrafica'] ); // testo se nuova anagrafica $new_anagrafica = save( $_POST['new_anagrafica'] ); if( $new_anagrafica != '' ){ $new_localita = save( $_POST['new_localita'] ); $idtipoanagrafica = $html->form( 'idtipoanagrafica', 'post', false ); $rs = $dbo->fetchArray("SELECT descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica='".$idtipoanagrafica."'"); $tipoanagrafica_desc = $rs[0]['descrizione']; //Leggo l'ultimo codice anagrafica per calcolare il successivo $rs = $dbo->fetchArray("SELECT codice FROM an_anagrafiche ORDER BY CAST(codice AS SIGNED) DESC LIMIT 0,1"); $codice = get_next_code( $rs[0]['codice'], 1, get_var("Formato codice anagrafica") ); //Se ad aggiungere un cliente è un agente, lo imposto come agente di quel cliente //Lettura tipologia della nuova anagrafica $rs = $dbo->fetchArray("SELECT descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica='".$idtipoanagrafica."'"); $tipoanagrafica_dst = $rs[0]['descrizione']; //Lettura tipologia dell'utente loggato $agente_is_logged = false; $rs = $dbo->fetchArray("SELECT descrizione FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica='".$user_idanagrafica."'"); for( $i=0; $iquery($query); $idanagrafica = $dbo->last_inserted_id(); //Inserisco il rapporto dell'anagrafica (cliente, tecnico, ecc) for( $t=0; $tquery($query); $rs = $dbo->fetchArray("SELECT descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica='".$idtipoanagrafica[$t]."'"); $tipoanagrafica_dst = $rs[0]['descrizione']; if ($tipoanagrafica_dst=='Azienda') array_push( $_SESSION['infos'], "Sembra che tu abbia inserito la tua anagrafica Azienda, ricordati di impostarla come predefinita dal menù ''Strumenti -> Impostazioni -> Generali''." ); } if ( sizeof($idtipoanagrafica) == '0' ){ $query = "INSERT INTO an_tipianagrafiche_anagrafiche(idanagrafica, idtipoanagrafica) VALUES (\"".$idanagrafica."\", '1')"; $dbo->query($query); $tipoanagrafica_dst = 'Cliente' ; $tipoanagrafica_desc = 'Cliente' ; } if ( $idagente != 0 ){ $dbo->query("INSERT INTO an_anagrafiche_agenti( idanagrafica, idagente ) VALUES( \"".$idanagrafica."\", \"".$idagente."\" )"); } //Creo il relativo conto nel partitario if( $tipoanagrafica_dst == 'Cliente' ){ //Calcolo prossimo numero cliente $rs = $dbo->fetchArray("SELECT MAX( CAST(co_pianodeiconti3.numero AS UNSIGNED) ) AS max_numero FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti2.descrizione='Crediti clienti e crediti diversi'"); $new_numero = $rs[0]['max_numero'] + 1; $new_numero = str_pad( $new_numero, 6, "0", STR_PAD_LEFT ); //Creazione conto $dbo->query("INSERT INTO co_pianodeiconti3( numero, descrizione, idpianodeiconti2, can_delete, can_edit ) VALUES( \"".$new_numero."\", \"".$new_anagrafica."\", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Crediti clienti e crediti diversi'), 1, 1 )"); $idconto = $dbo->last_inserted_id(); //Collegamento conto $dbo->query("UPDATE an_anagrafiche SET idconto_cliente=\"".$idconto."\" WHERE idanagrafica=\"".$idanagrafica."\""); } else if( $tipoanagrafica_dst == 'Fornitore' ){ //Calcolo prossimo numero cliente $rs = $dbo->fetchArray("SELECT MAX( CAST(co_pianodeiconti3.numero AS UNSIGNED) ) AS max_numero FROM co_pianodeiconti3 INNER JOIN co_pianodeiconti2 ON co_pianodeiconti3.idpianodeiconti2=co_pianodeiconti2.id WHERE co_pianodeiconti2.descrizione='Debiti fornitori e debiti diversi'"); $new_numero = $rs[0]['max_numero'] + 1; $new_numero = str_pad( $new_numero, 6, "0", STR_PAD_LEFT ); //Creazione conto $dbo->query("INSERT INTO co_pianodeiconti3( numero, descrizione, idpianodeiconti2, can_delete, can_edit ) VALUES( \"".$new_numero."\", \"".$new_anagrafica."\", (SELECT id FROM co_pianodeiconti2 WHERE descrizione='Debiti fornitori e debiti diversi'), 1, 1 )"); $idconto = $dbo->last_inserted_id(); //Collegamento conto $dbo->query("UPDATE an_anagrafiche SET idconto_fornitore=\"".$idconto."\" WHERE idanagrafica=\"".$idanagrafica."\""); } array_push( $_SESSION['infos'], "Aggiunta nuova anagrafica di tipo ''".$tipoanagrafica_dst."''" ); } $data = saveDate( $_POST['data'] ); $dir = $_POST['dir']; $idtipodocumento = save( $_POST['idtipodocumento'] ); // cerco impostazioni tipo documento $numerazione_progressiva=get_var_tipodoc($idtipodocumento,'mod_num'); $dir=get_var_tipodoc($idtipodocumento,'dir'); $idconto=get_var_tipodoc($idtipodocumento,'idconto'); $idpagamento_new=get_var_tipodoc($idtipodocumento,'idpagamento'); // $idstato=get_var_tipodoc($idtipodocumento,'sta_apertura'); $id_gruppodoc=get_var_tipodoc($idtipodocumento,'id_gruppo_tipologia'); $suffisso=get_var_tipodoc($idtipodocumento,'txt_suffisso'); $suffisso_anno=get_var_tipodoc($idtipodocumento,'suffisso_anno'); $idstato = get_var_tipodoc($idtipodocumento,'sta_apertura'); $mod_prodotollo = get_var_tipodoc($idtipodocumento,'mod_prodotollo'); $ordine_servizio=get_var_tipodoc($idtipodocumento,'mod_ordineservizio'); $nuovo_id_protocollo=0; $query = "SELECT esigibilita_iva , idagente , idbanca_vendite , default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."'"; $rs = $dbo->fetchArray($query); $idagente = $rs[0]['idagente']; $idbanca_vendite = $rs[0]['idbanca_vendite']; $default_ritenuta_acconto = $rs[0]['default_ritenuta_acconto']; $default_rivalsa_inps = $rs[0]['default_rivalsa_inps']; $split_p='0'; if ($rs[0]['esigibilita_iva'] == 'S' ) $split_p='1'; if( $numerazione_progressiva==0) $numero = get_new_numerofattura( $data ); if( $numerazione_progressiva==1) $numero=get_new_numerofattura_multi($data,$idtipodocumento); if( $dir=='entrata' ){ if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } else{ $numero_esterno = ''; $forza_numerazione=get_var_tipodoc($idtipodocumento,'forza_numerazione'); if( $forza_numerazione =='1' ){ // forzatura numero progressivo if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } } // ricerco ultimo id protocollo if( $mod_prodotollo=='1' ){ $query = "SELECT IFNULL(MAX(id_protocollo),'0') AS max_protocollo FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' ORDER BY CAST(id_protocollo AS UNSIGNED) DESC LIMIT 0,1"; $rs = $dbo->fetchArray($query); $nuovo_id_protocollo = $rs[0]['max_protocollo']+1; } // se documento e' un ordine di servizio ricerco il contratto $idcontratto='0'; if( $ordine_servizio=='1' ){ $query="SELECT co_contratti.id AS idcontratto, an_anagrafiche.idanagrafica, numero, nome FROM co_contratti INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE an_anagrafiche.idanagrafica='".$idanagrafica."' AND idstato NOT IN (SELECT `id` FROM co_staticontratti WHERE descrizione='Bozza' OR descrizione='Rifiutato' OR descrizione='Pagato') ORDER BY id desc"; $rs = $dbo->fetchArray($query); $idcontratto = $rs[0]['idcontratto']; } if( $modules_info[$module_name]["permessi"] == 'rw' ){ $numero_documento=$suffisso.$numero_esterno; if( $suffisso_anno==1) $numero_documento = $numero_documento."_".date("Y"); //Tipo di pagamento predefinito dall'anagrafica $query = "SELECT id FROM co_pagamenti WHERE id=(SELECT idpagamento FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."')"; $rs = $dbo->fetchArray($query); $idpagamento = $rs[0]['id']; // se pagaemnto non impostato cerco se pagamento impostato per default if( $idpagamento=='') $idpagamento=$idpagamento_new; // impostazione data protocollo if( date ('d') <= 15){ $data_prot = date ('Y/m/15'); }else{ $data_prot = date ('Y/m/t'); } $query = "INSERT INTO co_documenti ( split_p , idritenutaacconto,idrivalsainps,id_contratto,idbanca_vendite,id_protocollo,data_prot,idagente , numero, numero_esterno,numero_documento, id_gruppo_tipologia,idanagrafica, idconto, idtipodocumento, idpagamento, data, idstatodocumento, idsede ) VALUES ( \"".$split_p."\", \"".$default_ritenuta_acconto."\", \"".$default_rivalsa_inps."\",\"".$idcontratto."\",\"".$idbanca_vendite."\",\"".$nuovo_id_protocollo."\",\"".$data_prot."\",\"".$idagente."\", \"".$numero."\", \"".$numero_esterno."\", \"".$numero_documento."\",\"".$id_gruppodoc."\",\"".$idanagrafica."\", \"".$idconto."\", \"".$idtipodocumento."\", \"".$idpagamento."\", \"".$data."\", \"".$idstato."\", (SELECT idsede_fatturazione FROM an_anagrafiche WHERE idanagrafica=\"".$idanagrafica."\") )"; $dbo->query($query); $iddocumento = $dbo->last_inserted_id(); $id_record = $iddocumento; // log anagrafiche add_storico_doc($iddocumento,"Creazione nuovo documento"); //Collego l'intervento al contratto if( $idcontratto != "0" ){ $query = "INSERT INTO co_righe_contratti( `idcontratto`, `idintervento` ) VALUES( \"".$idcontratto."\", \"".$iddocumento."\")"; $dbo->query( $query ); } array_push( $_SESSION['infos'], "Aggiunto documento numero ".$numero."!" ); } break; case "update": if( $modules_info[$module_name]["permessi"] == 'rw' ){ if( isset($_POST['id_record']) ){ include ($docroot . "/lib/salva_personalizzati.php"); $stato_per_chiusura = get_var_tipodoc2($iddocumento,'sta_concluso'); $dir=get_var_tipodoc2($iddocumento,'dir'); $numero_esterno = save( $_POST['numero_esterno'] ); $data = saveDate( $_POST['data'] ); $idagente = save( $_POST['idagente'] ); $note = save( $_POST['note'] ); $buono_ordine = save( $_POST['buono_ordine'] ); $note_aggiuntive = save( $_POST['note_aggiuntive'] ); $idstatodocumento = save($_POST['idstatodocumento']); $idpagamento = save($_POST['idpagamento']); $idcausalet = save($_POST['idcausalet']); $idspedizione = save($_POST['idspedizione']); $idporto = save($_POST['idporto']); $idaspettobeni = save($_POST['idaspettobeni']); $idvettore = save($_POST['idvettore']); $n_colli = save($_POST['n_colli']); $idsede = save($_POST['idsede']); $idconto = save($_POST['idconto']); $matricola = save($_POST['matricola']); $numero_documento = save($_POST['numero_documento']); $totale_imponibile = get_imponibile_fattura($iddocumento); $totale_fattura = get_totale_fattura($iddocumento); $idbanca_vendite=save( $_POST['idbanca_vendite']); $idmezzo = save($_POST['idmezzo']); $datatrasporto = saveDate( $_POST['datatrasporto'] ); $oratrasporto = save($_POST['oratrasporto']); ( $_POST['stp_prezzi'] == 'on' ) ? $stp_prezzi=1 : $stp_prezzi=0; ( $_POST['stp_sconti'] == 'on' ) ? $stp_sconti=1 : $stp_sconti=0; ( $_POST['stp_immagini'] == 'on' ) ? $stp_immagini=1 : $stp_immagini=0; ( $_POST['stp_descestesa'] == 'on' ) ? $stp_descestesa=1 : $stp_descestesa=0; ( $_POST['split_p'] == 'on' ) ? $split_p=1 : $split_p=0; $bassegno=save( $_POST['bassegno']); $nassegno=save( $_POST['nassegno']); $tipo_sconto = save( $_POST['tipo_sconto_globale'] ); $sconto_globale = force_decimal($_POST['sconto_globale']); // se era chiuso mi rileggo le variabili principali $query = "SELECT * FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); if( $stato_per_chiusura == $rs[0]['idstatodocumento'] ) { $idpagamento=$rs[0]['idpagamento'] ; $idconto = $rs[0]['idconto'] ; $idbanca_vendite = $rs[0]['idbanca_vendite'] ; $idcausalet = $rs[0]['idcausalet'] ; $idaspettobeni = $rs[0]['idaspettobeni'] ; $idporto = $rs[0]['idporto'] ; $tipo_sconto = $rs[0]['tipo_sconto_globale'] ; $sconto_globale = $rs[0]['sconto_globale'] ; } $qana = "SELECT id , nome FROM my_impianti WHERE matricola='".$matricola."'"; $rs_matricola = $dbo->fetchArray($qana); $descrizione_prev = save( $_POST['descrizione_prev'] ); $tempi_consegna = save( $_POST['tempi_consegna'] ); $validita = save($_POST['validita']); $data_bozza = saveDate( $_POST['data_bozza'] ); $data_accettazione = saveDate( $_POST['data_accettazione'] ); $data_conclusione = saveDate( $_POST['data_conclusione'] ); $data_rifiuto = saveDate( $_POST['data_rifiuto'] ); $id_contratto=save( $_POST['id_contratto']); // dati eventuali documento elettronico $el_causale_1 = save( $_POST['el_causale_1'] ); $el_causale_2 = save( $_POST['el_causale_2'] ); $el_idrif = save( $_POST['el_idrif'] ); $el_rif_data = saveDate( $_POST['el_rif_data'] ); $el_id_codicecup = save( $_POST['el_id_codicecup'] ); $el_id_codicecig = save( $_POST['el_id_codicecig'] ); $el_rif_codicecommessa = save( $_POST['el_rif_codicecommessa'] ); $el_idrif_ddt1 = save( $_POST['el_idrif_ddt1'] ); $el_idrif_ddt1_data = saveDate( $_POST['el_idrif_ddt1_data'] ); $el_idrif_ddt2 = save( $_POST['el_idrif_ddt2'] ); $el_idrif_ddt2_data = saveDate( $_POST['el_idrif_ddt2_data'] ); $el_modalitapagamento = save( $_POST['el_modalitapagamento'] ); // $idritenutaacconto = get_var("Percentuale ritenuta d'acconto"); // $idrivalsainps = save($_POST['idrivalsainps']); if( $dir=='uscita' ){ // $idrivalsainps = save($_POST['idrivalsainps']); // $idritenutaacconto = get_var("Percentuale ritenuta d'acconto"); $bollo = save($_POST['bollo']); } else{ // $idrivalsainps = 0; // $idritenutaacconto = 0; $bollo = 0; } // aggiorno lo stato precedente $query = "update co_documenti set idstatodocumento_prec = idstatodocumento where id='".$iddocumento."'"; $dbo->query($query); //Leggo la descrizione del pagamento $query = "SELECT descrizione , codice_modalita_pagamento_fe FROM co_pagamenti WHERE id='".$idpagamento."'"; $rs = $dbo->fetchArray($query); $pagamento = $rs[0]['descrizione']; $codice_modalita_pagamento_fe = $rs[0]['codice_modalita_pagamento_fe']; //Query di aggiornamento $query = "UPDATE co_documenti SET bassegno=\"".$bassegno."\" ,nassegno=\"".$nassegno."\" ,id_impianto=\"".$rs_matricola[0]['id']."\" ,nome_impianto=\"".$rs_matricola[0]['nome']."\" ,id_contratto=\"".$id_contratto."\" , tipo_sconto_globale=\"".$tipo_sconto."\" ,sconto_globale=\"".$sconto_globale."\" ,idbanca_vendite=\"".$idbanca_vendite."\" ,matricola=\"".$matricola."\" , numero_documento=\"".$numero_documento."\", data=\"".$data."\", idstatodocumento=\"".$idstatodocumento."\", idagente=\"".$idagente."\", idpagamento=\"".$idpagamento."\", idcausalet=\"".$idcausalet."\", idspedizione=\"".$idspedizione."\", idporto=\"".$idporto."\", idaspettobeni=\"".$idaspettobeni."\", idvettore=\"".$idvettore."\", n_colli=\"".$n_colli."\", idsede=\"".$idsede."\", el_causale_1=\"".$el_causale_1."\",el_causale_2=\"".$el_causale_2."\", numero_esterno=\"$numero_esterno\", note=\"$note\", note_aggiuntive=\"$note_aggiuntive\", idconto=\"$idconto\", idmezzo=\"".$idmezzo."\", datatrasporto=\"".$datatrasporto."\", oratrasporto=\"".$oratrasporto."\", stp_prezzi=\"".$stp_prezzi."\", stp_sconti=\"".$stp_sconti."\", stp_immagini=\"".$stp_immagini."\", stp_descestesa=\"".$stp_descestesa."\",split_p=\"".$split_p."\", descrizione_prev=\"$descrizione_prev\", tempi_consegna=\"$tempi_consegna\", validita=\"$validita\", data_bozza=\"$data_bozza\", data_accettazione=\"$data_accettazione\", data_conclusione=\"$data_conclusione\", data_rifiuto=\"$data_rifiuto\", el_idrif=\"".$el_idrif."\", el_rif_data=\"".$el_rif_data."\",el_id_codicecup=\"".$el_id_codicecup."\",el_id_codicecig=\"".$el_id_codicecig."\", el_rif_codicecommessa=\"$el_rif_codicecommessa\", el_idrif_ddt1=\"$el_idrif_ddt1\", el_idrif_ddt1_data=\"$el_idrif_ddt1_data\", el_idrif_ddt2=\"$el_idrif_ddt2\", el_idrif_ddt2_data=\"$el_idrif_ddt2_data\", el_modalitapagamento=\"".$codice_modalita_pagamento_fe."\" , buono_ordine=\"".$buono_ordine."\", bollo=0, rivalsainps=0, ritenutaacconto=0, iva_rivalsainps=0 WHERE id=\"$iddocumento\""; $dbo->query($query); // log anagrafiche add_storico_doc($iddocumento,"Eseguito salvataggio documento"); //aggiorno intervento se presente un riferimento al documento $dbo->query( "update in_interventi SET idsede=\"".$idsede."\" WHERE idintervento='$iddocumento'" ); $query = "SELECT descrizione FROM co_statidocumento WHERE id='$idstatodocumento'"; $rs = $dbo->fetchArray($query); //Ricalcolo inps, ritenuta e bollo (se la fattura non è stata pagata) if( $dir=='entrata' ){ ricalcola_costiagg_fattura($iddocumento); } else{ ricalcola_costiagg_fattura($iddocumento, $idrivalsainps, $idritenutaacconto, $bollo); } aggiorna_sconto($iddocumento); // leggo stati per piano diei conti e scadenziario $stato_per_scadenziario = get_var_tipodoc2($iddocumento,'sta_scadenziario'); $stato_conto = get_var_tipodoc2($iddocumento,'sta_conto'); // $stato_per_chiusura = get_var_tipodoc2($iddocumento,'sta_concluso'); $query = "SELECT descrizione FROM co_statidocumento WHERE id='$stato_per_scadenziario'"; $rs_scadenziario = $dbo->fetchArray($query); $stato_per_scadenziario=$rs_scadenziario[0]['descrizione']; $query = "SELECT descrizione FROM co_statidocumento WHERE id='$stato_conto'"; $rs_scadenziario = $dbo->fetchArray($query); $stato_per_conto=$rs_scadenziario[0]['descrizione']; $query = "SELECT descrizione FROM co_statidocumento WHERE id='$stato_per_chiusura'"; $rs_scadenziario = $dbo->fetchArray($query); $stato_per_chiusura=$rs_scadenziario[0]['descrizione']; //Elimino la scadenza e tutti i movimenti, poi se la fattura è emessa le ricalcolo if( $rs[0]['descrizione']<>$stato_per_chiusura ){ //Elimino la scadenza e tutti i movimenti if( $rs[0]['descrizione']<>$stato_per_scadenziario ){ elimina_scadenza($iddocumento); elimina_movimento($iddocumento, 0); elimina_movimento($iddocumento, 1); } else if( $rs[0]['descrizione']==$stato_per_scadenziario ){ elimina_scadenza($iddocumento); elimina_movimento($iddocumento, 0); } if( $rs[0]['descrizione']==$stato_per_scadenziario ){ aggiungi_scadenza($iddocumento, $pagamento); array_push( $_SESSION['infos'], "Inserimento scadenziario pagamenti!" ); } if( $rs[0]['descrizione']==$stato_per_conto ){ aggiungi_movimento($iddocumento, $dir); array_push( $_SESSION['infos'], "Inserimento nel piano dei conti!" ); } } //testo se devo creare in automatico documento figlio $sta_cambio =get_var_tipodoc2($iddocumento,'sta_cambio'); $doc_sucessivo =get_var_tipodoc2($iddocumento,'doc_sucessivo'); $sta_sucessivo =get_var_tipodoc2($iddocumento,'sta_sucessivo'); if ( $sta_cambio == $idstatodocumento && $doc_sucessivo<>'0' && $sta_sucessivo<>'0' ){ //genero automatico documento figlio $new_iddocumento=doc_duplica($iddocumento,$doc_sucessivo ,$sta_sucessivo); array_push( $_SESSION['infos'], "Documento sucessivo creato con successo!" ); } // testo se devo inserire le posizoni dentro l'impianto $mod_myimpianti =get_var_tipodoc2($iddocumento,'mod_myimpianti'); if ( $mod_myimpianti == $idstatodocumento && $matricola <>'' ){ inserisci_myimpianti($iddocumento , $matricola); array_push( $_SESSION['infos'], "Inserire posizioni in impianto!" ); } if( $matricola !='' ){ $dbo->query( "DELETE FROM my_impianti_interventi WHERE idintervento='$iddocumento'" ); $rs = $dbo->fetchArray("SELECT id FROM my_impianti WHERE matricola=\"".$matricola."\""); $id_myimpianto= $rs[0]['id']; $dbo->query("INSERT INTO my_impianti_interventi( idintervento, idimpianto ) VALUES( \"".$iddocumento."\", \"".$id_myimpianto."\" )"); } array_push( $_SESSION['infos'], "Documento modificato correttamente!" ); } } break; //eliminazione documento case "delete": if( $modules_info[$module_name]["permessi"] == 'rw' ){ // tolgo la transazione se e' un documento differito $query = "SELECT idpadre FROM co_documenti_transazioni WHERE idfiglio='$iddocumento'"; $rs = $dbo->fetchArray($query); for( $i=0; $iquery( "UPDATE co_documenti SET idstatodocumento = idstatodocumento_prec , id_differito=0 WHERE id='".$rs[$i]['idpadre']."'" ); } //Se ci sono degli articoli collegati (ma non collegati a preventivi o interventi) li rimetto nel magazzino $query = "SELECT id, idarticolo FROM co_righe_documenti WHERE iddocumento='$iddocumento'"; $rs = $dbo->fetchArray($query); for( $i=0; $ifetchArray($query); // cerco riferimento ad interventi impianto $dbo->query( "DELETE FROM my_impianti_interventi WHERE idintervento='$iddocumento'" ); if ( cerca_modulo("HelpDesk") > 0 ) { //scangio eventuale schede helpdesk $dbo->query( "UPDATE ca_callcenter SET iddocumento = '0' WHERE iddocumento='".$iddocumento."'" ); } if ( cerca_modulo("Noleggio") > 0 ) { //scangio eventuale schede noleggio $dbo->query( "UPDATE ms_noleggio SET idpreventivo = '0' WHERE idpreventivo='".$iddocumento."'" ); } if ( cerca_modulo("Domini") > 0 ) { //scangio eventuale schede dominio $dbo->query( "UPDATE web_domini SET iddocumento = '0' WHERE iddocumento='".$iddocumento."'" ); } if ( cerca_modulo("Laboratorio") > 0 ) { //scangio eventuale schede laboratorio $dbo->query( "UPDATE lb_laboratorio SET iddocumento = '0' WHERE iddocumento='".$iddocumento."'" ); $rs_test = $dbo->fetchArray("SELECT * FROM lb_laboratorio WHERE n_ddt='".$iddocumento."'"); if (sizeof($rs_test) > 0) { $dbo->query( "UPDATE lb_laboratorio SET n_ddt = '0' , rma='' , note='' WHERE n_ddt='".$iddocumento."'" ); } } // svuoto collegaemnto ad eventuale documento di canone $dbo->query( "UPDATE co_contratti SET id_documento = '0' WHERE id_documento='".$iddocumento."'" ); // testo se il documento e' stato completamente evaso $rs_test = $dbo->fetchArray("SELECT * FROM co_righe_documenti WHERE qta <> qta_evasa and iddocumento='".$rs[0]['id_doc_padre']."'"); if (sizeof($rs_test) > 0) { agg_doc_stato_rip($rs[0]['id_doc_padre']); } $dbo->query( "DELETE FROM co_documenti_transazioni WHERE idfiglio='$iddocumento'" ); $dbo->query( "DELETE FROM or_ordini_transazioni WHERE idfiglio='$iddocumento'" ); $dbo->query( "DELETE FROM co_documenti WHERE id='$iddocumento'" ); $dbo->query( "DELETE FROM co_righe_documenti WHERE iddocumento='$iddocumento'" ); $dbo->query( "DELETE FROM co_scadenziario WHERE iddocumento='$iddocumento'" ); $dbo->query( "DELETE FROM mg_movimenti WHERE iddocumento='$iddocumento'" ); // elimino eventuali pianificazioni $dbo->query( "DELETE FROM in_interventi WHERE idintervento='$iddocumento'" ); $dbo->query( "DELETE FROM in_interventi_tecnici WHERE idintervento='$iddocumento'" ); $dbo->query( "DELETE FROM mg_articoli_interventi WHERE idintervento='$iddocumento'" ); $dbo->query( "DELETE FROM in_righe_interventi WHERE idintervento='$iddocumento'" ); // elimino allegati e progressivi al documento $dbo->query( "DELETE FROM zz_files WHERE externalid='$iddocumento'" ); $dbo->query( "DELETE FROM co_documenti_progressivo WHERE id_documento='$iddocumento'" ); elimina_scadenza($iddocumento); elimina_movimento($iddocumento); array_push( $_SESSION['infos'], "Documento eliminato!" ); // log anagrafiche add_storico_doc($iddocumento,"Eliminazione nuovo documento"); } break; case "reopen": if( $modules_info[$module_name]["permessi"] == 'rw' ){ if( $id_record != '' ){ if( $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Bozza') WHERE id='".$id_record."'") ){ elimina_scadenza( $id_record ); elimina_movimento( $id_record , 1 ); ricalcola_costiagg_fattura( $id_record ); array_push( $_SESSION['infos'], "Fattura riaperta!" ); // log anagrafiche add_storico_doc($id_record,"Riapertura del documento"); } } } break; case "addarticolo": if( $modules_info[$module_name]["permessi"] == 'rw' ){ if( $iddocumento != '' && isset($_POST['idarticolo']) ){ $idarticolo = save( $_POST['idarticolo'] ); $idmagazzino = save( $_POST['idmagazzino'] ); $id_matricola = save( $_POST['id_matricola'] ); $idrivalsainps = save( $_POST['idrivalsainps'] ); $idritenutaacconto = save( $_POST['idritenutaacconto'] ); $descrizione = save( $_POST['descrizione'] ); $descrizione_art = save( $_POST['descrizione'] ); // cerco iva articoli preimpostata $idiva=query_secca("","idiva_vendita","mg_articoli","where id ='".$idarticolo."'"); if( $idiva=='0' ){ $idiva = get_var("Iva predefinita"); } $idconto=query_secca("","id_conto","mg_articoli","where id='".$idarticolo."'"); $qta = force_decimal( $_POST['qta'] ); $prezzo = force_decimal( $_POST['prezzo'] ); $lotto = ""; $serial = save( $_POST['serial'] ); $altro = ""; $idtiposconto = save( $_POST['idtiposconto'] ); $sconto = force_decimal($_POST['sconto']); $sconto_extra = force_decimal($_POST['sconto_extra']); $sconto_extra1 = force_decimal($_POST['sconto_extra1']); $per_agente = force_decimal($_POST['per_agente']); $ins_doppia=0; $riga_canone=0; $riga_canone1=0; // cerco evantuali posizioni di contratto fisse se presente un contratto associato if( $records[0]['id_contratto'] != "0" && $records[0]['id_contratto'] != "" ){ $qta_consumata=cerca_canone_qta($records[0]['id_contratto'],$idarticolo); $qta_scalare=cerca_canone_qta_scalare($records[0]['id_contratto'],$idarticolo); $prezzo_imposto=cerca_canone_prezzo($records[0]['id_contratto'],$idarticolo); $qta_disp=$qta_scalare - $qta_consumata; if( $qta_scalare != '' ){ $riga_canone=1; if( $qta_disp >= $qta ){ $prezzo="0"; }else{ $qta_new=$qta - $qta_disp;; $prezzo_new =$prezzo; $qta=$qta_disp; $prezzo="0"; $ins_doppia=1; $riga_canone1=2; $prezzo_tmp = cerca_canone_prezzo($records[0]['id_contratto'],$idarticolo); if( $prezzo_tmp != '' ) $prezzo_new=$prezzo_tmp; } }else{ // la qta disponibile non presente , cerco eventuale prezzo imposto $riga_canone1=2; $riga_canone=2; $prezzo_new = cerca_canone_prezzo($records[0]['id_contratto'],$idarticolo); if( $prezzo_new != '' ) $prezzo=$prezzo_new; if( $prezzo_new == '' ) $riga_canone=0; } $forza_zero=cerca_contratti_a_zero($records[0]['id_contratto']); if( $forza_zero == '1' ){ $prezzo_new=0; $prezzo=0; $riga_canone1=2; $riga_canone=2; } } if($idtiposconto=='2'){ $sconto_prc = $sconto; $sconto = ($prezzo * $sconto_prc)/100; $sconto_new = ($prezzo_new * $sconto_prc)/100; }else{ $sconto_prc = $sconto; } if($idtiposconto=='2'){ $sconto_extra = $sconto_extra; $sconto1 = (($prezzo - $sconto) * $sconto_extra)/100; $sconto1_new = (($prezzo_new - $sconto_new) * $sconto_extra)/100; }else{ $sconto1 = $sconto_extra; } if($idtiposconto=='2'){ $sconto_extra1 = $sconto_extra1; $sconto2 = (($prezzo - $sconto - $sconto1 ) * $sconto_extra1)/100; $sconto2_new = (($prezzo_new - $sconto_new - $sconto1_new ) * $sconto_extra1)/100; }else{ $sconto2 = $sconto_extra1; } $sconto = ( $sconto + $sconto1 + $sconto2 ) *$qta; $sconto_new = ( $sconto_new + $sconto1_new + $sconto2_new ) *$qta_new; if( $records[0]['id_contratto'] != "0" && $records[0]['id_contratto'] != "" && $riga_canone != '0' ){ $sconto=0; $sconto_new=0; $sconto_prc=0; $sconto_extra=0; $sconto_extra1=0; } add_articolo_infattura( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo*$qta, $sconto, '0', $lotto, $serial, $altro , $idconto,$idtiposconto,$sconto_prc,$sconto_extra,$sconto_extra1 ,$idmagazzino , $riga_canone ,$id_matricola,$per_agente ); if($ins_doppia=='1'){ add_articolo_infattura2( $iddocumento, $idarticolo, $descrizione, $idiva, $qta_new, $prezzo_new*$qta_new, $sconto_new, '0', $lotto, $serial, $altro , $idconto,$idtiposconto,$sconto_prc,$sconto_extra,$sconto_extra1 ,$idmagazzino , $riga_canone1 ,$id_matricola,$per_agente ); } array_push( $_SESSION['infos'], "Articolo aggiunto!" ); if( $dir=='entrata' ){ ricalcola_costiagg_fattura($iddocumento); } else{ ricalcola_costiagg_fattura($iddocumento); } } } break; case "addriga": if( $modules_info[$module_name]["permessi"] == 'rw' ){ if( $iddocumento != '' ){ //Selezione costi da intervento $descrizione = save( $_POST['descrizione'] ); $importo_manuale = force_decimal( $_POST['subtot'] ); $qta = force_decimal($_POST['qta']); $idiva = save($_POST['idiva']); $id_matricola = save( $_POST['id_matricola'] ); $um = save($_POST['um']); $subtot = $importo_manuale*$qta; $idconto = save( $_POST['idconto_riga'] ); $idtiposconto = save( $_POST['idtiposconto'] ); $sconto = force_decimal($_POST['sconto']); $sconto_extra = force_decimal($_POST['sconto_extra']); $sconto_extra1 = force_decimal($_POST['sconto_extra1']); $per_agente = force_decimal($_POST['per_agente']); if($idtiposconto=='2'){ $sconto_prc = $sconto; $sconto = ($importo_manuale * $sconto_prc)/100; }else{ $sconto_prc = $sconto; } if($idtiposconto=='2'){ $sconto_extra = $sconto_extra; $sconto1 = (($importo_manuale - $sconto) * $sconto_extra)/100; }else{ $sconto1 = $sconto_extra; } if($idtiposconto=='2'){ $sconto_extra1 = $sconto_extra1; $sconto2 = (($importo_manuale - $sconto - $sconto1 ) * $sconto_extra1)/100; }else{ $sconto2 = $sconto_extra1; } $sconto = ( $sconto + $sconto1 + $sconto2 ) *$qta; // cerco dati agente $query = "SELECT idanagrafica FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $query = "SELECT idagente , default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idanagrafica']."'"; $rs = $dbo->fetchArray($query); $default_ritenuta_acconto = $rs[0]['default_ritenuta_acconto']; $default_rivalsa_inps = $rs[0]['default_rivalsa_inps']; $query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idagente']."'"; $rs_agente = $dbo->fetchArray($query); $perc_agente = $rs_agente[0]['perc_agente']; $perc_netto = $rs_agente[0]['perc_netto']; $perc_iva = $rs_agente[0]['perc_iva']; if ($per_agente != '0' ) { $perc_agente=$per_agente; } //calcolo percentuali agente if($perc_netto =='1'){ $val_agente=($importo_manuale * $qta) - $sconto ; $val_agente = ($val_agente * $perc_agente)/100; }else{ $val_agente = (($importo_manuale * $qta) * $perc_agente)/100; } if( $perc_iva =='1'){ $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $agente_iva= ($val_agente/100)*$rs2[0]['percentuale']; $val_agente=$val_agente + $agente_iva ; } //Calcolo iva $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='".$html->form('idrivalsainps', 'post')."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $importo_manuale * $qta / 100 * $rs[0]['percentuale']; $idrivalsainps=$html->form('idrivalsainps', 'post'); //Calcolo ritenuta d'acconto $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$html->form('idritenutaacconto', 'post')."'"; $rs = $dbo->fetchArray($query); $ritenutaacconto = (($importo_manuale*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; $idritenutaacconto=$html->form('idritenutaacconto', 'post'); if( $default_rivalsa_inps != "0" ){ $idrivalsainps=$default_rivalsa_inps; $query = "SELECT * FROM co_rivalsainps WHERE id='".$default_rivalsa_inps."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $importo_manuale * $qta / 100 * $rs[0]['percentuale']; } if( $default_ritenuta_acconto != "0" ){ $idritenutaacconto=$default_ritenuta_acconto; //Calcolo ritenuta d'acconto $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$default_ritenuta_acconto."'"; $rs = $dbo->fetchArray($query); $ritenutaacconto = (($importo_manuale*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; } // Info matricola $qana = "SELECT * FROM my_impianti WHERE matricola='".$id_matricola."'"; $rs_matricola = $dbo->fetchArray($qana); $matricola_impianto=$rs_matricola[0]['id']; //Aggiunta riga generica sul documento $query = "INSERT INTO co_righe_documenti( id_impianto , matricola_impianto , iddocumento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto,idconto,tipo_sconto,sconto_primo,sconto_extra ,sconto_extra1,importo_agente,importo_iva_agente,perc_agente) VALUES( '".$matricola_impianto."','".$id_matricola."',\"$iddocumento\", \"".$idiva."\", \"$desc_iva\", \"$iva\", \"$iva_indetraibile\", \"$descrizione\", \"$subtot\", \"$sconto\", \"$um\", \"$qta\", \"".$idrivalsainps."\", \"".$rivalsainps."\", \"".$idritenutaacconto."\", \"".$ritenutaacconto."\" , \"".$idconto."\", \"".$idtiposconto."\", \"".$sconto_prc."\",\"".$sconto_extra."\",\"".$sconto_extra1."\",\"".$val_agente."\",\"".$agente_iva."\",\"".$perc_agente."\" )"; if( $dbo->query($query) ){ array_push( $_SESSION['infos'], "Riga aggiunta!" ); // log anagrafiche add_storico_doc($iddocumento,"Aggiunto articolo generico ".$descrizione." con quantità = ".$qta); //Ricalcolo inps, ritenuta e bollo if( $dir=='entrata' ){ ricalcola_costiagg_fattura($iddocumento); } else{ ricalcola_costiagg_fattura($iddocumento); } } } } break; case "addriga_g": if( $modules_info[$module_name]["permessi"] == 'rw' ){ if( $iddocumento != '' ){ $descrizione = save( $_POST['descrizione'] ); //Aggiunta riga generica sul documento $query = "INSERT INTO co_righe_documenti( iddocumento, descrizione , riga_varia) VALUES( \"$iddocumento\", \"$descrizione\", '1' )"; if( $dbo->query($query) ){ array_push( $_SESSION['infos'], "Riga aggiunta!" ); // log anagrafiche add_storico_doc($iddocumento,"Aggiunto commento ".$descrizione); } } } break; case "editriga": if( $modules_info[$module_name]["permessi"] == 'rw' ){ if( isset($_POST['idriga']) ){ //Selezione costi da intervento $ins_doppia=0; $idriga = $html->form('idriga', 'post'); $idmagazzino = save( $_POST['idmagazzino'] ); $id_matricola = save( $_POST['id_matricola'] ); $descrizione = save( $_POST['descrizione'] ); $importo_manuale = save( $_POST['subtot'] ); $importo_manuale = str_replace( ",", ".", $importo_manuale ); $prezzo = force_decimal( $_POST['subtot'] ); $qta = save($_POST['qta']); $qta = str_replace( ",", ".", $qta ); $idiva = save($_POST['idiva']); $um = save($_POST['um']); $idconto = save( $_POST['idconto_riga'] ); $subtot = $importo_manuale*$qta; $idtiposconto = save( $_POST['idtiposconto'] ); $sconto = force_decimal($_POST['sconto']); $sconto_extra = force_decimal($_POST['sconto_extra']); $sconto_extra1 = force_decimal($_POST['sconto_extra1']); $idmagazzino_old=query_secca("","id_magazzino_e","co_righe_documenti","where id='".$idriga."'"); $per_agente = force_decimal($_POST['per_agente']); // Info matricola $qana = "SELECT * FROM my_impianti WHERE matricola='".$id_matricola."'"; $rs_matricola = $dbo->fetchArray($qana); $matricola_impianto=$rs_matricola[0]['id']; // cerco evantuali posizioni di contratto fisse se presente un contratto associato if( $records[0]['id_contratto'] != "0" && $records[0]['id_contratto'] != "" ){ $query = "SELECT idarticolo , qta , riga_canone FROM co_righe_documenti WHERE id='".$idriga."'"; $rs = $dbo->fetchArray($query); if( $rs[0]['idarticolo'] != '0' ){ $qta_consumata=cerca_canone_qta($records[0]['id_contratto'],$rs[0]['idarticolo']); $qta_scalare=cerca_canone_qta_scalare($records[0]['id_contratto'],$rs[0]['idarticolo']); $prezzo_imposto=cerca_canone_prezzo($records[0]['id_contratto'],$rs[0]['idarticolo']); $qta_disp=$qta_scalare - $qta_consumata + $rs[0]['qta']; if( ( $qta_scalare != '' ) && ( $rs[0]['riga_canone'] == '1')){ if( $qta_disp >= $qta ){ $importo_manuale="0"; }else{ $qta_new=$qta - $qta_disp;; $prezzo_new =$importo_manuale; $qta=$qta_disp; $importo_manuale="0"; $ins_doppia=1; $prezzo_tmp = cerca_canone_prezzo($records[0]['id_contratto'],$rs[0]['idarticolo']); if( $prezzo_tmp != '' ) $prezzo_new=$prezzo_tmp; } }else{ // la qta disponibile non presente , cerco eventuale prezzo imposto $prezzo_new = cerca_canone_prezzo($records[0]['id_contratto'],$idarticolo); if( $prezzo_new != '' ) $importo_manuale=$prezzo_new; } } } if($idtiposconto=='2'){ $sconto_prc = $sconto; $sconto = ($importo_manuale*$sconto_prc)/100; $sconto_new = ($prezzo_new * $sconto_prc)/100; }else{ $sconto_prc = $sconto; } if($idtiposconto=='2'){ $sconto_extra = $sconto_extra; $sconto1 = (($importo_manuale - $sconto) * $sconto_extra)/100; $sconto1_new = (($importo_manuale - $sconto_new) * $sconto_extra)/100; }else{ $sconto1 = $sconto_extra; } if($idtiposconto=='2'){ $sconto_extra1 = $sconto_extra1; $sconto2 = (($importo_manuale - $sconto - $sconto1) * $sconto_extra1)/100; $sconto2_new = (($importo_manuale - $sconto_new - $sconto1_new) * $sconto_extra1)/100; }else{ $sconto2 = $sconto_extra1; } $sconto = ( $sconto + $sconto1 + $sconto2 ) *$qta; $sconto_new = ( $sconto_new + $sconto1_new + $sconto2_new ) *$qta; // impostazioni documento$esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov"); $esegue_movimento=get_var_tipodoc2($iddocumento,"mod_mov"); $esegue_giacenza = get_var_tipodoc2($iddocumento,"mod_mag"); $id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e"); $id_magazzino_u = get_var_tipodoc2($iddocumento,"id_magazzino_u"); $id_tipo_u = get_var_tipodoc2($iddocumento,"id_tipo_u"); $dir = get_var_tipodoc2($iddocumento,"dir"); $agg_prezzo_e = get_var_tipodoc2($iddocumento,"agg_prezzo_e"); $agg_prezzo_u = get_var_tipodoc2($iddocumento,"agg_prezzo_u"); if ( $idmagazzino >= '0' ) $id_magazzino_e=$idmagazzino; // cerco dati agente $query = "SELECT idanagrafica FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $query = "SELECT idagente , default_ritenuta_acconto , default_rivalsa_inps FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idanagrafica']."'"; $rs = $dbo->fetchArray($query); $default_ritenuta_acconto = $rs[0]['default_ritenuta_acconto']; $default_rivalsa_inps = $rs[0]['default_rivalsa_inps']; $query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idagente']."'"; $rs_agente = $dbo->fetchArray($query); $perc_agente = $rs_agente[0]['perc_agente']; $perc_netto = $rs_agente[0]['perc_netto']; $perc_iva = $rs_agente[0]['perc_iva']; if ($per_agente != '0' ) { $perc_agente=$per_agente; } //calcolo percentuali agente if($perc_netto =='1'){ $val_agente=($importo_manuale * $qta) - $sconto ; $val_agente = ($val_agente * $perc_agente)/100; }else{ $val_agente = (($importo_manuale * $qta) * $perc_agente)/100; } if( $perc_iva =='1'){ $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $agente_iva= ($val_agente/100)*$rs2[0]['percentuale']; $val_agente=$val_agente + $agente_iva ; } //Lettura idarticolo dalla riga documento $rs = $dbo->fetchArray("SELECT idarticolo, qta FROM co_righe_documenti WHERE id=\"".$idriga."\""); $idarticolo = $rs[0]['idarticolo']; $old_qta = $rs[0]['qta']; $subtot = $importo_manuale*$qta; //Calcolo iva $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='".$html->form('idrivalsainps', 'post')."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $importo_manuale*$qta / 100 * $rs[0]['percentuale']; //Calcolo ritenuta d'acconto $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$html->form('idritenutaacconto', 'post')."'"; $rs = $dbo->fetchArray($query); $ritenutaacconto = (($importo_manuale*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; $idrivalsainps=$html->form('idrivalsainps', 'post'); $idritenutaacconto=$html->form('idritenutaacconto', 'post'); if( $default_rivalsa_inps != "0" ){ $idrivalsainps=$default_rivalsa_inps; $query = "SELECT * FROM co_rivalsainps WHERE id='".$default_rivalsa_inps."'"; $rs = $dbo->fetchArray($query); $rivalsainps = $importo_manuale * $qta / 100 * $rs[0]['percentuale']; } if( $default_ritenuta_acconto != "0" ){ $idritenutaacconto=$default_ritenuta_acconto; //Calcolo ritenuta d'acconto $query = "SELECT * FROM co_ritenutaacconto WHERE id='".$default_ritenuta_acconto."'"; $rs = $dbo->fetchArray($query); $ritenutaacconto = (($importo_manuale*$qta) + $rivalsainps) / 100 * $rs[0]['percentuale']; } //Modifica riga generica sul documento $query = "UPDATE co_righe_documenti SET matricola_impianto=\"".$id_matricola."\", id_impianto=\"".$matricola_impianto."\", id_magazzino_e=\"".$id_magazzino_e."\", idconto=\"".$idconto."\", idiva=\"".$idiva."\", desc_iva=\"".$desc_iva."\", iva=\"".$iva."\", iva_indetraibile=\"".$iva_indetraibile."\", descrizione=\"".$descrizione."\", subtotale=\"".$subtot."\", sconto=\"".$sconto."\", tipo_sconto=\"".$idtiposconto."\", sconto_primo=\"".$sconto_prc."\", sconto_extra=\"".$sconto_extra."\", sconto_extra1=\"".$sconto_extra1."\", um=\"".$um."\", qta=\"".$qta."\", idritenutaacconto=\"".$idritenutaacconto."\", ritenutaacconto=\"".$ritenutaacconto."\", idrivalsainps=\"".$idrivalsainps."\", rivalsainps=\"".$rivalsainps."\" , importo_agente=\"".$val_agente."\",importo_iva_agente=\"".$agente_iva."\",perc_agente=\"".$perc_agente."\" WHERE id=\"".$idriga."\""; if( $dbo->query($query) ){ // log anagrafiche add_storico_doc($iddocumento,"Modificato articolo ".$descrizione." con quantità = ".$qta); if($ins_doppia=='1'){ add_articolo_infattura2( $iddocumento, $idarticolo, $descrizione, $idiva, $qta_new, $prezzo_new*$qta_new, $sconto_new, '0', $lotto, $serial, $altro , $idconto,$idtiposconto,$sconto_prc,$sconto_extra,$sconto_extra1 ,$idmagazzino ,$id_matricola); } //Se ho movimentato una riga collegata ad un articolo di magazzino, movimento il magazzino if( $idarticolo != '' ){ ( $dir == 'entrata' ) ? $sign='-' : $sign='+'; if( $esegue_movimento== 1 ) { //Lettura dati del movimento in magazzino per poterlo modificare $rs = $dbo->fetchArray("SELECT id, qta FROM mg_movimenti WHERE idarticolo=\"".$idarticolo."\" AND qta=\"".$sign.$old_qta."\" AND iddocumento=\"".$iddocumento."\""); $idmovimento = $rs[0]['id']; //Aggiorno il movimento del magazzino $query = "UPDATE mg_movimenti SET qta=\"".$sign.$qta."\" WHERE id=\"".$idmovimento."\""; $dbo->query( $query ); } //Aggiorno la quantità articolo (qtà_attuale - qtà_precedentemente_movimentata + nuova_qtà) if( $esegue_giacenza== 1 ) { if ( $idmagazzino_old == $id_magazzino_e ){ if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } if( $dir == "entrata" ){ $query = "UPDATE ".$tabella." SET qta= qta +".$old_qta.$sign.$qta.$where; } else{ $query = "UPDATE ".$tabella." SET qta=qta -".$old_qta.$sign.$qta.$where; } $dbo->query( $query ); } else{ // ripristino giacenza prima di cambio magazzino if( $idmagazzino_old == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$idmagazzino_old."' "; } if( $dir == "entrata" ){ $query = "UPDATE ".$tabella." SET qta= qta +".$old_qta.$where; } else{ $query = "UPDATE ".$tabella." SET qta=qta -".$old_qta.$where; } $dbo->query( $query ); // ricalcolo nuova giacenza su mahazzino nupvo if( $id_magazzino_e == 0 ) { $tabella=" mg_articoli "; $where =" WHERE id='".$idarticolo."'"; } else{ $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_e."' "; } if( $dir == "entrata" ){ $query = "UPDATE ".$tabella." SET qta= qta ".$sign.$qta.$where; } else{ $query = "UPDATE ".$tabella." SET qta=qta ".$sign.$qta.$where; } $dbo->query( $query ); } } // testo se devo fare movimenti su altri magazzini if( $id_magazzino_u != 0 ) { ( $id_tipo_u == '1' ) ? $sign='+' : $sign='-'; $tabella=" mg_articoli_magazzini "; $where =" WHERE idarticolo='".$idarticolo."' and idmagazzino='".$id_magazzino_u."' "; if( $id_tipo_u == "1" ){ $query = "UPDATE ".$tabella." SET qta= qta -".$old_qta.$sign.$qta.$where; } else{ $query = "UPDATE ".$tabella." SET qta=qta +".$old_qta.$sign.$qta.$where; } $dbo->query( $query ); } if( $agg_prezzo_e == 1 ) { // aggiornaemnto prezzo di aquisto $dbo->query( "UPDATE mg_articoli SET prezzo_acquisto=".$importo_manuale." WHERE id='".$idarticolo."'"); } if( $agg_prezzo_u == 1 ) { // aggiornaemnto prezzo di vendita $dbo->query( "UPDATE mg_articoli SET prezzo_vendita=".$importo_manuale." WHERE id='".$idarticolo."'"); } } array_push( $_SESSION['infos'], "Riga modificata!" ); //Ricalcolo inps, ritenuta e bollo if( $dir=='entrata' ) ricalcola_costiagg_fattura($iddocumento); else ricalcola_costiagg_fattura($iddocumento); } } } break; case "editriga_canone": $idriga = $html->form('idriga', 'post'); $idtiposconto = save( $_POST['idtipoassistenza'] ); if ( $idtiposconto =='2' ) { $query = "UPDATE co_righe_documenti SET riga_canone='0' WHERE id=\"".$idriga."\""; if( $dbo->query($query) ){ array_push( $_SESSION['infos'], "Condizione posizione modificata" ); // log anagrafiche add_storico_doc($iddocumento,"Condizione posizione modificata"); } } break; //Scollegamento articolo da documento case "unlink_articolo": if( $modules_info[$module_name]["permessi"] == 'rw' ){ if( $iddocumento != '' && isset($_POST['idarticolo']) ){ $idriga = $html->form( 'idriga', 'post' ); $idarticolo = $html->form( 'idarticolo', 'post' ); rimuovi_articolo_dafattura( $idarticolo, $iddocumento, $idriga ); // rimuovo eventuali seriali associato $dbo->query("update mg_prodotti set id_riga_documento='0' WHERE id_riga_documento='".$idriga."'"); if( $dbo->query("DELETE FROM co_righe_documenti WHERE iddocumento='".$iddocumento."' AND id='".$idriga."'") ){ //Ricalcolo inps, ritenuta e bollo if( $dir=='entrata' ){ ricalcola_costiagg_fattura($iddocumento); } else{ ricalcola_costiagg_fattura($iddocumento, 0, 0, 0); } array_push( $_SESSION['infos'], "Articolo rimosso!" ); } } } break; //Scollegamento riga generica da documento case "unlink_riga": if( $modules_info[$module_name]["permessi"] == 'rw' ){ if( isset($_POST['idriga']) ){ $idriga = $html->form('idriga', 'post'); //Se la riga è stata creata da un ordine, devo riportare la quantità evasa nella tabella degli ordini //al valore di prima, riaggiungendo la quantità che sto togliendo $rs = $dbo->fetchArray( "SELECT qta, descrizione, idarticolo, idordine, idiva FROM co_righe_documenti WHERE iddocumento=\"".$iddocumento."\" AND id=\"".$idriga."\"" ); //Rimpiazzo la quantità negli ordini $dbo->query( "UPDATE or_righe_ordini SET qta_evasa=qta_evasa-".$rs[0]['qta']." WHERE descrizione=\"".$rs[0]['descrizione']."\" AND idarticolo=\"".$rs[0]['idarticolo']."\" AND idordine=\"".$rs[0]['idordine']."\" AND idiva=\"".$rs[0]['idiva']."\"" ); //Se la riga è stata creata da un ddt, devo riportare la quantità evasa nella tabella dei ddt //al valore di prima, riaggiungendo la quantità che sto togliendo $rs = $dbo->fetchArray( "SELECT qta, descrizione, idarticolo, idddt, idiva FROM co_righe_documenti WHERE iddocumento=\"".$iddocumento."\" AND id=\"".$idriga."\"" ); //Rimpiazzo la quantità nei ddt $dbo->query( "UPDATE dt_righe_ddt SET qta_evasa=qta_evasa-".$rs[0]['qta']." WHERE descrizione=\"".$rs[0]['descrizione']."\" AND idarticolo=\"".$rs[0]['idarticolo']."\" AND idddt=\"".$rs[0]['idddt']."\" AND idiva=\"".$rs[0]['idiva']."\"" ); $query = "DELETE FROM co_righe_documenti WHERE iddocumento=\"$iddocumento\" AND id=\"$idriga\""; // log anagrafiche add_storico_doc($iddocumento,"Rimozione riga ".$rs[0]['descrizione']); if( $dbo->query($query) ){ //Ricalcolo inps, ritenuta e bollo if( $dir=='entrata' ){ ricalcola_costiagg_fattura($iddocumento); } else{ ricalcola_costiagg_fattura($iddocumento, 0, 0, 0); } array_push( $_SESSION['infos'], "Riga rimossa!" ); } } } break; //ordino righe in fattura case "sortrows": $id = $html->form('id', 'post'); $iddocumento = $html->form('iddocumento', 'post'); $ordine = $html->form('ordine', 'post'); $dbo->query("UPDATE co_righe_documenti SET ordine=".$ordine." WHERE id=".$id.""); array_push( $_SESSION['infos'], "Ordine aggiornato!" ); exit; break; case 'add_serial': $idriga = save( $_POST['idriga'] ); $idarticolo = save( $_POST['idarticolo'] ); // cerco qta riga $n_qta=query_secca("","qta","co_righe_documenti","where id ='".$idriga."'"); // svuoto eventuali associazioni precedenti $dbo->query("UPDATE mg_prodotti SET id_riga_documento='0' WHERE idarticolo=".$idarticolo." and id_riga_documento='".$idriga."'"); // ciclo sui seriali passati for( $i=0; $iquery("UPDATE mg_prodotti SET id_riga_documento=".$idriga." WHERE idarticolo=".$idarticolo." and serial='".$serial."'"); } } array_push( $_SESSION['infos'], "Abbinamento seriali terminato!" ); break; case "add_transazione": $idtipodocumento = save( $_POST['idintervento'] ); if ( $idtipodocumento <> '' ) { // cerco impostazioni tipo documento $idanagrafica=get_var_tipodoc2($iddocumento ,'idanagrafica'); $idagente=get_var_tipodoc2($iddocumento ,'idagente'); $idbanca_vendite=get_var_tipodoc2($iddocumento ,'idbanca_vendite'); $idsede=get_var_tipodoc2($iddocumento ,'idsede'); $numerazione_progressiva=get_var_tipodoc($idtipodocumento,'mod_num'); $dir=get_var_tipodoc($idtipodocumento,'dir'); $idconto=get_var_tipodoc($idtipodocumento,'idconto'); $matricola=get_var_documento($iddocumento ,'matricola'); $idpagamento_new=get_var_tipodoc($idtipodocumento,'idpagamento'); $idstato=get_var_tipodoc($idtipodocumento,'sta_apertura'); $id_gruppodoc=get_var_tipodoc($idtipodocumento,'id_gruppo_tipologia'); $suffisso=get_var_tipodoc($idtipodocumento,'txt_suffisso'); $suffisso_anno=get_var_tipodoc($idtipodocumento,'suffisso_anno'); $ordine_servizio=get_var_tipodoc($idtipodocumento,'mod_ordineservizio'); $idmagazzino=get_var_tipodoc($idtipodocumento,'id_magazzino_e'); $data=date("Y-m-d"); if( $numerazione_progressiva==0) $numero = get_new_numerofattura( $data ); if( $numerazione_progressiva==1) $numero=get_new_numerofattura_multi($data,$idtipodocumento); if( $dir=='entrata' ){ if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } else{ $numero_esterno = ''; $forza_numerazione=get_var_tipodoc($idtipodocumento,'forza_numerazione'); if( $forza_numerazione =='1' ){ // forzatura numero progressivo if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } } $numero_documento=$suffisso.$numero_esterno; if( $suffisso_anno==1) $numero_documento = $numero_documento."_".date("Y"); //Creazione nuovo documento //Tipo di pagamento predefinito dall'anagrafica $query = "SELECT id FROM co_pagamenti WHERE id=(SELECT idpagamento FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."')"; $rs = $dbo->fetchArray($query); $idpagamento = $rs[0]['id']; $tab_testata=" co_documenti "; $tab_righe=" co_righe_documenti "; $tab_transazione=" co_documenti_transazioni "; // testo se devo inserire il protocollo $nuovo_id_protocollo=0; $mod_prodotollo = get_var_tipodoc($idtipodocumento,'mod_prodotollo'); if( $mod_prodotollo=='1' ){ $query = "SELECT IFNULL(MAX(id_protocollo),'0') AS max_protocollo FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' ORDER BY CAST(id_protocollo AS UNSIGNED) DESC LIMIT 0,1"; $rs = $dbo->fetchArray($query); $nuovo_id_protocollo = $rs[0]['max_protocollo']+1; } // impostazione data protocollo if( date ('d') <= 15){ $data_prot = date ('Y/m/15'); }else{ $data_prot = date ('Y/m/t'); } //Se la fattura è di vendita e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni if( $dir=='entrata' && $idpagamento=='' ) $idpagamento = $idpagamento_new; $query = "INSERT INTO ".$tab_testata." ( id_protocollo,data_prot,idbanca_vendite,idagente , numero, numero_esterno,numero_documento, id_gruppo_tipologia,idanagrafica, idconto, idtipodocumento, idpagamento, data, idstatodocumento, idsede , matricola) VALUES ( \"".$nuovo_id_protocollo."\",\"".$data_prot."\",\"".$idbanca_vendite."\",\"".$idagente."\",\"".$numero."\", \"".$numero_esterno."\", \"".$numero_documento."\",\"".$id_gruppodoc."\",\"".$idanagrafica."\", \"".$idconto."\", \"".$idtipodocumento."\", \"".$idpagamento."\", NOW() , \"".$idstato."\",\"".$idsede."\",\"".$matricola."\")"; $dbo->query($query); $iddocumento_new = $dbo->last_inserted_id(); // aggiorno id_doc_padre $query="update ".$tab_testata." set id_doc_padre = '".$id_record."' where id='".$iddocumento_new."'"; $dbo->query($query); // genero storico transazione $query="Insert into ".$tab_transazione." (idpadre,idfiglio,data_transazione,idutente) values (\"".$iddocumento."\", \"".$iddocumento_new."\",NOW(), '".$_SESSION['idutente']."')"; $dbo->query($query); //Processo solo le righe con qta da evadere maggiore di zero for( $i=0; $i '0' ){ $idrigadocumento = save( $_POST['idrigadocumento'][$i] ); $idarticolo = save( $_POST['idarticolo'][$i] ); $descrizione = save( $_POST['descrizione'][$i] ); $qta = save( $_POST['qta_da_evadere'][$i] ); // $qta_e = save( $_POST['qta_da_evadere'][$i] ); $qta = str_replace( ",", ".", $qta ); $um = save( $_POST['um'][$i] ); // $subtot = save( $_POST['subtot'][$i] * $qta ); $idiva = save( $_POST['idiva'][$i] ); $iva = save( $_POST['iva'][$i]*$qta ); // cerco dati della riga $query = "SELECT * FROM co_righe_documenti WHERE id='".$idrigadocumento."'"; $rs_riga = $dbo->fetchArray($query); $idiva = $rs_riga[0]['idiva']; $desc_iva = $rs_riga[0]['desc_iva']; $tipo_sconto=$rs_riga[0]['tipo_sconto']; $sconto_primo=$rs_riga[0]['sconto_primo']; $sconto_extra=$rs_riga[0]['sconto_extra']; $sconto_extra1=$rs_riga[0]['sconto_extra1']; $subtot=$rs_riga[0]['subtotale'] / $rs_riga[0]['qta']; //Se sto aggiungendo un articolo uso la funzione per inserirlo e incrementare la giacenza if( $idarticolo != '0' ){ // ricalcolo gli sconti in base alla qta evasa if($tipo_sconto=='2'){ $sconto = ($subtot*$sconto_primo)/100; }else{ $sconto = $sconto_primo; } if($tipo_sconto=='2'){ $sconto1 = (($subtot - $sconto) * $sconto_extra)/100; }else{ $sconto1 = $sconto_extra; } if($tipo_sconto=='2'){ $sconto2 = (($subtot - $sconto - $sconto1) * $sconto_extra1)/100; }else{ $sconto2 = $sconto_extra1; } $sconto = ( $sconto + $sconto1 + $sconto2 ) * $qta ; $subtot=$subtot * $qta; $idriga = add_articolo_infattura( $iddocumento_new, $idarticolo, $descrizione, $idiva, $qta, $subtot, $sconto, '0', '', '', '' ,$rs_riga[0]['idconto'],$tipo_sconto,$sconto_primo,$sconto_extra,$sconto_extra1,$idmagazzino,'','','' ); //Imposto la provenienza del documento e la qta ottenuta dalla transazione $dbo->query( "UPDATE co_righe_documenti SET id_impianto='".$rs_riga[0]['id_impianto']."' ,matricola_impianto='".$rs_riga[0]['matricola_impianto']."' ,id_riferimento='".$idrigadocumento."' , qta_da_transazione='".$qta."' WHERE id=\"".$idriga."\"" ); } //Inserimento riga normale else{ // ricalcolo gli sconti in base alla qta evasa if($tipo_sconto=='2'){ $sconto = ($subtot*$sconto_primo)/100; }else{ $sconto = $sconto_primo; } if($tipo_sconto=='2'){ $sconto1 = (($subtot - $sconto) * $sconto_extra)/100; }else{ $sconto1 = $sconto_extra; } if($tipo_sconto=='2'){ $sconto2 = (($subtot - $sconto - $sconto1) * $sconto_extra1)/100; }else{ $sconto2 = $sconto_extra1; } $sconto = ( $sconto + $sconto1 + $sconto2 ) * $qta ; // cerco dati agente $query = "SELECT idanagrafica FROM co_documenti WHERE id='".$iddocumento."'"; $rs = $dbo->fetchArray($query); $query = "SELECT idagente FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idanagrafica']."'"; $rs = $dbo->fetchArray($query); $query = "SELECT * FROM an_anagrafiche WHERE idanagrafica='".$rs[0]['idagente']."'"; $rs_agente = $dbo->fetchArray($query); $perc_agente = $rs_agente[0]['perc_agente']; $perc_netto = $rs_agente[0]['perc_netto']; $perc_iva = $rs_agente[0]['perc_iva']; //calcolo percentuali agente if($perc_netto =='1'){ $val_agente=($subtot * $qta) - $sconto ; $val_agente = ($val_agente * $perc_agente)/100; }else{ $val_agente = (($subtot * $qta) * $perc_agente)/100; } if( $perc_iva =='1'){ $rs2 = $dbo->fetchArray("SELECT * FROM co_iva WHERE id='".$idiva."'"); $agente_iva= ($val_agente/100)*$rs2[0]['percentuale']; $val_agente=$val_agente + $agente_iva ; } $subtot=$subtot * $qta; $dbo->query( "INSERT INTO co_righe_documenti( id_impianto,matricola_impianto, iddocumento, idarticolo, idordine, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta,tipo_sconto,sconto_primo,sconto_extra,sconto_extra1 ,importo_agente,importo_iva_agente,perc_agente ) VALUES(\"".$rs_riga[0]['id_impianto']."\",\"".$rs_riga[0]['matricola_impianto']."\", \"$iddocumento_new\", \"$idarticolo\", \"".$idordine."\", \"".$idiva."\", \"".$desc_iva."\", \"$iva\", \"$iva_indetraibile\", \"".$descrizione."\", \"$subtot\", \"$sconto\", \"$um\", \"$qta\",\"$tipo_sconto\",\"$sconto_primo\",\"$sconto_extra\",\"$sconto_extra1\",\"".$val_agente."\",\"".$agente_iva."\",\"".$perc_agente."\" )" ); $idriga = $dbo->last_inserted_id(); $dbo->query( "UPDATE co_righe_documenti SET id_riferimento=\"".$idrigadocumento."\" , qta_da_transazione='".$qta."' WHERE id=\"".$idriga."\"" ); } //Scalo la quantità dal documento $dbo->query("UPDATE co_righe_documenti SET qta_evasa = qta_evasa+".$qta." WHERE id='".$idrigadocumento."'"); } } // testo se il docuemnto e' stato completamente evaso $rs_test = $dbo->fetchArray("SELECT * FROM co_righe_documenti WHERE qta <> qta_evasa and iddocumento='".$iddocumento."'"); if (sizeof($rs_test) > 0) { } else { $stato_transazione_concluso = get_var_tipodoc2($iddocumento,'stato_transazione_concluso'); $stato_attuale = get_var_documento($iddocumento,'idstatodocumento'); if (sizeof($stato_transazione_concluso) > 0) { agg_doc_stato($iddocumento,$stato_attuale,$stato_transazione_concluso); array_push( $_SESSION['infos'], "Cambio stato documento in automatico secondo le impostazioni immesse!" ); } } array_push( $_SESSION['infos'], "Aggiunto documento numero ".$numero_documento."!" ); add_storico_doc($iddocumento,"Creata transazione successiva"); add_storico_doc($iddocumento_new,"Creazione documento da transazione"); } //array_push( $_SESSION['infos'], $idtipodocumento ); break; case "fattpaimport": $f = pathinfo( $_FILES['filexml']['name'] ); $filename = $f['filename']; $tmp = $_FILES['file_xml']['tmp_name']; $upload_dir = $docroot."/files/upload_pa"; array_push( $_SESSION['infos'], $f['filename'] ); break; case "delete_xml": $nome_file=$records[0]['nome_file_xml']; $module_name_path = get_var("Percorso XML"); if( @unlink($docroot."/files/".$module_name_path."/".$nome_file) ){ $dbo->query("UPDATE co_documenti SET codice_xml='' , nome_file_xml='' WHERE id=\"".$iddocumento."\""); $dbo->query( "delete from zz_files where nome='".$nome_file."' and filename='".$nome_file."' and module='".$module_name_path."'"); add_storico_doc($iddocumento,"Eliminazione file XML fattura elettronica"); } array_push( $_SESSION['infos'], $nome_file ); break; case "fattpa": $file=crea_fatturapa($id_record); $rs = $dbo->fetchArray( "SELECT module_dir,name FROM zz_modules WHERE id=\"".$id_module."\"" ); $module_dir = $rs[0]['module_dir']; $externalid=$iddocumento; $module_name_path = get_var("Percorso XML"); $originale = $nfile = $docroot."/files/pa/".$file; $copia = $nfile = $docroot."/files/".$module_name_path."/".$file; $dst_dir = $nfile = $docroot."/files/".$module_name_path; if( !is_dir($dst_dir) ){ if( !mkdir($dst_dir) ){ } } //aggiorno in co_documenti $dbo->query( "UPDATE co_documenti SET nome_file_xml='".$file."' WHERE id=\"".$iddocumento."\"" ); if ( copy($originale,$copia) ){ $dbo->query( "delete from zz_files where nome='".$file."' and filename='".$file."' and module='".$module_name_path."'"); $rs = $dbo->query("INSERT INTO `zz_files`( nome, data, filename, module, externalid,categoria ) VALUES( \"".$file."\", NOW(), \"".$file."\", \"".$module_name_path."\", \"".$externalid."\",'Fattura elettronica' )"); array_push( $_SESSION['infos'], "File caricato correttamente!" ); array_push( $_SESSION['infos'],"Creato documento ".$file); add_storico_doc($iddocumento,"Creazione file XML fattura elettronica"); } break; case "add_newordfornitore": $qta_or = save( $_POST['qta_or'] ); $idriga = save( $_POST['idriga'] ); $idnewdocumento = save( $_POST['idnewdocumento'] ); $query = "SELECT * FROM co_righe_documenti WHERE id='".$idriga."'"; $rs_ord = $dbo->fetchArray($query); $descrizione = $rs_ord[0]['descrizione']; $idarticolo = $rs_ord[0]['idarticolo']; $idiva = $rs_ord[0]['idiva']; $query = "SELECT prezzo_acquisto , idfornitore FROM mg_articoli WHERE id='".$idarticolo."'"; $rs_art = $dbo->fetchArray($query); $prezzo_vendita = $rs_art[0]['prezzo_acquisto']; $idanagrafica=$rs_art[0]['idfornitore']; if( $idnewdocumento != '' ){ $idrif_ordine=$idnewdocumento ; $lotto = ""; $serial = ""; $altro = ""; $qta = force_decimal( $html->form('qta_or', 'post') ); $sconto = ""; $tipo_sconto = "EUR"; $sconto_prc = ''; $sconto = ''; add_articolo_inordine( $id_record,$idriga,$idnewdocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo_vendita*$qta, $sconto, $sconto_prc, $tipo_sconto, $lotto, $serial, $altro ); array_push( $_SESSION['infos'], "Articolo aggiunto ad ordine fornitore!" ); }else{ $dir="uscita"; $idtipoordine = '1'; // $data = date(Now); if( $idanagrafica <> '' ){ $numero = get_new_numeroordine( $data ); $numero_esterno = get_new_numerosecondarioordine( $data ); //Tipo di pagamento predefinito dall'anagrafica fornitore $query = "SELECT id FROM co_pagamenti WHERE id=(SELECT idpagamento FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."')"; $rs = $dbo->fetchArray($query); $idpagamento = $rs[0]['id']; //Se l'ordine è un ordine cliente 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"); $query = "INSERT INTO or_ordini( numero, numero_esterno, idanagrafica, idtipoordine, idpagamento, data, idstatoordine ) VALUES ( \"".$numero."\", \"".$numero_esterno."\", '$idanagrafica', '$idtipoordine', '$idpagamento', NOW(), (SELECT `id` FROM `or_statiordine` WHERE `descrizione`='Non evaso') )"; $id_record_new = $dbo->query($query); $idrif_ordine=$id_record_new ; //aggiungo articolo $lotto = ""; $serial = ""; $altro = ""; $qta = force_decimal( $html->form('qta_or', 'post') ); $sconto = ""; $tipo_sconto = "EUR"; $sconto_prc = ''; $sconto = ''; add_articolo_inordine($id_record,$idriga,$id_record_new, $idarticolo, $descrizione, $idiva, $qta, $prezzo_vendita*$qta, $sconto, $sconto_prc, $tipo_sconto, $lotto, $serial, $altro ); array_push( $_SESSION['infos'], "Aggiunto ordine numero ".$numero."!" ); }else{ array_push( $_SESSION['infos'], "Non e' presente il fornitore in anagrafica articolo: Ordine non creato" ); } } // aggiorno riferimento idordine della riga documento $dbo->query( "UPDATE co_righe_documenti SET idordine='".$idrif_ordine."' WHERE id=\"".$idriga."\"" ); break; //Creazione documento da ordine case "documento_da_ordine": $totale_fattura = 0.00; $data = saveDate( $_POST['data'] ); $idanagrafica = intval( $_POST['idanagrafica'] ); $idarticolo = intval( $_POST['idarticolo'] ); $idpagamento = intval( $_POST['idpagamento'] ); $idconto = intval( $_POST['idconto'] ); $idordine = intval( $_POST['idordine'] ); $idtipodocumento = save( $_POST['idnewdocumento'] ); $n_doc_sec = save( $_POST['n_doc_sec'] ); // ricerca se la numerazione e' progressiva o propria $query = "SELECT mod_num , dir , idconto , idpagamento , sta_apertura ,descrizione , id_gruppo_tipologia FROM co_tipidocumento WHERE id='".$idtipodocumento."'"; $rs_parametri = $dbo->fetchArray($query); $numerazione_progressiva = $rs_parametri[0]['mod_num']; $dir = $rs_parametri[0]['dir']; // $idconto = $rs_parametri[0]['idconto']; $idpagamento_new = $rs_parametri[0]['idpagamento']; $idstato = $rs_parametri[0]['sta_apertura']; $id_gruppodoc=$rs_parametri[0]['id_gruppo_tipologia']; $tipo_documento=$rs_parametri[0]['descrizione']; if( $numerazione_progressiva==0) $numero = get_new_numerofattura( $data ); if( $numerazione_progressiva==1) $numero=get_new_numerofattura_multi($data,$idtipodocumento); if( $dir=='entrata' ){ if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } else{ $numero_esterno = $n_doc_sec; $forza_numerazione=get_var_tipodoc($idtipodocumento,'forza_numerazione'); if( $forza_numerazione =='1' ){ // forzatura numero progressivo if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } } //Creazione nuovo documento $dbo->query( "INSERT INTO co_documenti( numero, numero_documento,numero_esterno, data, idanagrafica, idtipodocumento, idstatodocumento, idpagamento, idconto , id_gruppo_tipologia , id_ordine_padre ) VALUES( \"".$numero."\", \"".$n_doc_sec."\", \"".$numero."\", \"".$data."\", \"".$idanagrafica."\", (SELECT id FROM co_tipidocumento WHERE descrizione='".$tipo_documento."'), (SELECT id FROM co_statidocumento WHERE descrizione='Bozza'), \"".$idpagamento."\", \"".$idconto."\" ,\"".$id_gruppodoc."\",\"".$idordine."\" )" ); $iddocumento = $dbo->last_inserted_id(); $id_record = $iddocumento; add_storico_doc($iddocumento,"Creazione documento da Ordine"); //Lettura di tutte le righe della tabella in arrivo for( $i=0; $ifetchArray($qprc); $sconto_primo = $rsprc[0]['sconto_primo']; $tipo_sconto = $rsprc[0]['tipo_sconto']; $sconto_extra = $rsprc[0]['sconto_extra']; $sconto_extra1 = $rsprc[0]['sconto_extra1']; $serial = $rsprc[0]['serial']; //Calcolo l'iva indetraibile $q = "SELECT indetraibile FROM co_iva WHERE id='".$idiva."'"; $rs = $dbo->fetchArray($q); $iva_indetraibile = $iva/100*$rs[0]['indetraibile']; //Leggo la descrizione iva $query = "SELECT * FROM co_iva WHERE id='".$idiva."'"; $rs = $dbo->fetchArray($query); $desc_iva = $rs[0]['descrizione']; //Lettura lotto, serial, altro dalla riga dell'ordine // $q = "SELECT lotto, serial, altro, descrizione FROM or_righe_ordini WHERE id='".$idrigaordine."'"; // $rs = $dbo->fetchArray($q); $idconto=0; //Se sto aggiungendo un articolo uso la funzione per inserirlo e incrementare la giacenza if( $idarticolo != '0' ){ $idiva_acquisto = $idiva; $prezzo_acquisto = $subtot; $idriga = add_articolo_infattura( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo_acquisto, $sconto, '0' ,'', $serial, '' , $idconto,$tipo_sconto,$sconto_primo,$sconto_extra,$sconto_extra1,'','','','' ); // $idriga=add_articolo_infattura( $iddocumento, $idarticolo, $descrizione, $idiva, $qta, $prezzo*$qta, $sconto, '0', $lotto, $serial, $altro , $idconto,$idtiposconto,$sconto_prc,$sconto_extra,$sconto_extra1 ); //Imposto la provenienza dell'ordine $dbo->query( "UPDATE co_righe_documenti SET idordine=\"".$idordine."\" , id_riferimento_riga_ordine=\"".$idrigaordine."\" WHERE id=\"".$idriga."\"" ); } //Inserimento riga normale else{ $dbo->query( "INSERT INTO co_righe_documenti( id_riferimento_riga_ordine,iddocumento, idarticolo, idordine, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, tipo_sconto, um, qta , sconto_primo,sconto_extra,sconto_extra1) VALUES( \"$idrigaordine\",\"$iddocumento\", \"$idarticolo\", \"".$idordine."\", \"".$idiva."\", \"".$desc_iva."\", \"$iva\", \"$iva_indetraibile\", \"".$descrizione."\", \"$subtot\", \"$sconto\", \"$tipo_sconto\", \"$um\", \"$qta\" ,\"$sconto_primo\" ,\"$sconto_extra\" ,\"$sconto_extra1\" )" ); $idriga = $dbo->last_inserted_id(); add_storico_doc($iddocumento,"Inserimento riga generica da Ordine"); } //Scalo la quantità dall'ordine $dbo->query("UPDATE or_righe_ordini SET qta_evasa = qta_evasa+".$qta." , id_documento_figlio = ".$iddocumento." WHERE id='".$idrigaordine."'"); } } // genero storico transazione $query="Insert into or_ordini_transazioni (idpadre,idfiglio,data_transazione,idutente) values (\"".$idordine."\", \"".$iddocumento."\",NOW(), '".$_SESSION['idutente']."')"; $dbo->query($query); // testo righe evasione dell'ordine $rs_testostato = $dbo->fetchArray("SELECT * FROM or_righe_ordini WHERE qta <> qta_evasa and idordine='".$idordine."'"); if( sizeof($rs_testostato) > 0 ){ $dbo->query( "UPDATE or_ordini SET idstatoordine = 3 where id='".$idordine."'"); } else{ $dbo->query( "UPDATE or_ordini SET idstatoordine = 2 where id='".$idordine."'"); } ricalcola_costiagg_fattura($iddocumento); array_push( $_SESSION['infos'], "Creato nuovo documento da ordine fornitore!" ); break; case "sendemail_rapportino": $from_address = str_replace( ",", ".", get_var("Indirizzo per le email in uscita") ); $oggetto = html_entity_decode($_POST['oggetto']); $allegato = $_POST['allegato']; $testo_email = html_entity_decode($_POST['body'], ENT_QUOTES); $destinatario=$_POST['destinatario']; $messaggio = new PHPmailer(str_replace( ",", ".", get_var("Indirizzo per le email in uscita") )); $messaggio->FromName = str_replace( ",", ".", get_var("Nome Form Mail") ); $messaggio->From = str_replace( ",", ".", get_var("Indirizzo per le email in uscita") ); $messaggio->AddAddress($destinatario); $mail_cc=str_replace( ",", ".", get_var("Destinatario fisso in copia (campo CC)")); if ($mail_cc != ""){ $messaggio->AddCC($mail_cc); } $messaggio->Subject=($oggetto); $testo_email=str_replace("

","",$testo_email); $testo_email=str_replace("

","",$testo_email); $messaggio->CharSet = "UTF-8"; $messaggio->Body=strip_tags($testo_email); $messaggio->AddAttachment( $allegato ); if(!$messaggio->Send()){ array_push( $_SESSION['infos'], $messaggio->ErrorInfo ); }else{ array_push( $_SESSION['infos'], "Email inviata correttamente" ); add_storico_doc($id_record,"Documento inviato a mezzo mail a:".$destinatario); } break; case "sendemail": $from_address = str_replace( ",", ".", get_var("Indirizzo per le email in uscita") ); $oggetto = html_entity_decode($_POST['oggetto']); $allegato = $_POST['allegato']; $allegato_xml = $_POST['allegato_xml']; $testo_email = html_entity_decode($_POST['body'], ENT_QUOTES); $destinatario=$_POST['destinatario']; $messaggio = new PHPmailer(str_replace( ",", ".", get_var("Indirizzo per le email in uscita") )); $messaggio->FromName = str_replace( ",", ".", get_var("Nome Form Mail") ); $messaggio->From = str_replace( ",", ".", get_var("Indirizzo per le email in uscita") ); $messaggio->AddAddress($destinatario); $mail_cc=str_replace( ",", ".", get_var("Destinatario fisso in copia (campo CC)")); if ($mail_cc != ""){ $messaggio->AddCC($mail_cc); } $messaggio->Subject=($oggetto); $testo_email=str_replace("

","",$testo_email); $testo_email=str_replace("

","",$testo_email); $messaggio->CharSet = "UTF-8"; $messaggio->Body=strip_tags($testo_email); $messaggio->AddAttachment( $allegato ); if (file_exists($allegato_xml)) { $messaggio->AddAttachment( $allegato_xml ); } if(!$messaggio->Send()){ array_push( $_SESSION['infos'], $messaggio->ErrorInfo ); }else{ array_push( $_SESSION['infos'], "Email inviata correttamente" ); add_storico_doc($id_record,"Documento inviato a mezzo mail a:".$destinatario); } break; case"edit_pianifica": // lettura documento attuale $query = "SELECT * FROM co_documenti WHERE id='".$iddocumento."'"; $rs_doc= $dbo->fetchArray($query); $idtecnico = intval( $_POST['idanagrafica'] ); $idstatointervento = save( $_POST['idstatointervento'] ); $idtipointervento = save( $_POST['idtipointervento'] ); $descrizione = save( $_POST['descrizione'] ); $id_matricola = save( $_POST['id_matricola'] ); $idriga = save( $_POST['idriga'] ); $periodo = saveDate( $_POST['data'] ); $periodo_f = saveDate( $_POST['data_f'] ); $orario = savetime( $_POST['orario'] ); $orario_fine = savetime( $_POST['orario_fine'] ); $or=date("H:i", strtotime($orario)); $or_f=date("H:i", strtotime($orario_fine)); $qta = save( $_POST['qta'] ); $qta_min = save( $_POST['qta_min'] ); $qta_min_calcolo = save( $_POST['qta_min'] ); $idsede=$rs_doc[0]['idsede']; $richiesta=$rs_doc[0]['note']; $query = "SELECT * FROM in_interventi WHERE idintervento='".$iddocumento."'"; $rs_int= $dbo->fetchArray($query); $test_da=date("Y-m-d", strtotime($periodo))." ".$or.":00"; $test_a=date("Y-m-d", strtotime($periodo_f))." ".$or_f.":00"; $qana = "SELECT * FROM my_impianti WHERE nome='".$id_matricola."'"; $rs_matricola = $dbo->fetchArray($qana); $inserisci="1"; $query_s = "SELECT * FROM in_interventi_tecnici WHERE idintervento='".$rs_doc[0]['id']."' and idtecnico='".$idtecnico."'"; $rs_test= $dbo->fetchArray($query_s); for( $i=0; $i $or_in ) && ( $test_da < $or_fi )) { $inserisci="0"; } if (( $test_a > $or_in ) && ( $test_a < $or_fi )) { $inserisci="0"; } if( $inserisci == '1' ){ if (( $test_da < $or_in ) || ( $test_da < $or_fi )) { $inserisci="0"; if ( $test_a < $or_fi ) { $inserisci="1"; } } } } if( $inserisci == '0' ){ array_push( $_SESSION['errors'], "Pianificazione gia presente per questo tecnico e periodo" ); } else{ if( sizeof($rs_int) > 0 ){ } else{ $dbo->query("INSERT INTO in_interventi( idintervento, idanagrafica, idtipointervento, idstatointervento, idsede, data_richiesta ) VALUES (\"".$rs_doc[0]['id']."\", \"".$rs_doc[0]['idanagrafica']."\", \"".$idtipointervento."\", \"".$idstatointervento."\", \"".$idsede."\", \"".$periodo."\" )" ); } $dbo->query("INSERT INTO in_interventi_tecnici( id_riga_riferimento_documento,id_impianto,matricola_impianto,descrizione_att ,idintervento, idtecnico, idtipointervento, idstatointervento,km, orario_inizio, orario_fine ) VALUES( \"".$idriga."\",\"".$rs_matricola[0]['id']."\",\"".$rs_matricola[0]['matricola']."\",\"".$descrizione."\",\"".$rs_doc[0]['id']."\", \"".$idtecnico."\", \"".$idtipointervento."\", \"".$idstatointervento."\", \"".$km."\", \"".( date("Y-m-d", strtotime($periodo)) )." ".$or."\", \"".( date("Y-m-d", strtotime($periodo_f)) )." ".$or_f."\")" ); array_push( $_SESSION['infos'], "Pianificazione inserita" ); add_storico_doc($id_record,"Eseguita pianificazione attivita"); } break; case "modifica_pianifica": // lettura documento attuale $query = "SELECT id FROM co_documenti WHERE id='".$iddocumento."'"; $rs_doc= $dbo->fetchArray($query); $idtecnico = intval( $_POST['idanagrafica'] ); $idstatointervento = save( $_POST['idstatointervento'] ); $idtipointervento = save( $_POST['idtipointervento'] ); $descrizione = save( $_POST['descrizione1'] ); $idriga = save( $_POST['idriga'] ); $id_matricola = save( $_POST['id_matricola'] ); $periodo = saveDate( $_POST['data'] ); $periodo_f = saveDate( $_POST['data_f'] ); $orario = savetime( $_POST['orario'] ); $orario_fine = savetime( $_POST['orario_fine'] ); $or=date("H:i", strtotime($orario)); $or_f=date("H:i", strtotime($orario_fine)); $test_da=date("Y-m-d", strtotime($periodo))." ".$or.":00"; $test_a=date("Y-m-d", strtotime($periodo_f))." ".$or_f.":00"; $inserisci="1"; $query_s = "SELECT * FROM in_interventi_tecnici WHERE idintervento='".$rs_doc[0]['id']."' and idtecnico='".$idtecnico."'"; $rs_test= $dbo->fetchArray($query_s); // Info matricola $qana = "SELECT * FROM my_impianti WHERE matricola='".$id_matricola."'"; $rs_matricola = $dbo->fetchArray($qana); for( $i=0; $i $or_in ) && ( $test_da < $or_fi ) ) { if ( $idriga != $id_r ) $inserisci="0"; } if (( $test_a > $or_in ) && ( $test_a < $or_fi ) ) { if ( $idriga != $id_r ) $inserisci="0"; } if( $inserisci == '1' ){ if (( $test_da < $or_in ) || ( $test_da < $or_fi ) ) { if ( $idriga != $id_r ) $inserisci="0"; if ( $test_a < $or_fi ) { $inserisci="1"; } } } } if( $inserisci == '0' ){ array_push( $_SESSION['errors'], "Pianificazione gia presente per questo tecnico e periodo" ); } else{ // prelevo eventuale firMa e poi elimino old record $query = "SELECT id , id_riga_riferimento_documento, firma_file , firma_data FROM in_interventi_tecnici WHERE id='".$idriga."'"; $rs_firma= $dbo->fetchArray($query); $firma_file=$rs_firma[0]['firma_file']; $firma_data=$rs_firma[0]['firma_data']; $id_old=$rs_firma[0]['id']; $id_riga_riferimento_documento=$rs_firma[0]['id_riga_riferimento_documento']; $dbo->query( "DELETE FROM in_interventi_tecnici WHERE id='$idriga'" ); $qta = save( $_POST['qta'] ); $qta_min = save( $_POST['qta_min'] ); $qta_min_calcolo = save( $_POST['qta_min'] ); $idsede="0"; $dbo->query("INSERT INTO in_interventi_tecnici( id,id_riga_riferimento_documento, id_impianto,matricola_impianto,firma_file,firma_data,descrizione_att,idintervento, idtecnico, idtipointervento, idstatointervento,km, orario_inizio, orario_fine ) VALUES( \"".$id_old."\" , \"".$id_riga_riferimento_documento."\" , \"".$rs_matricola[0]['id']."\",\"".$rs_matricola[0]['matricola']."\" , \"".$firma_file."\",\"".$firma_data."\",\"".$descrizione."\",\"".$rs_doc[0]['id']."\", \"".$idtecnico."\", \"".$idtipointervento."\", \"".$idstatointervento."\", \"".$km."\", \"".( date("Y-m-d", strtotime($periodo)) )." ".$or."\", \"".( date("Y-m-d", strtotime($periodo_f)) )." ".$or_f."\")" ); array_push( $_SESSION['infos'], "Pianificazione modificata" ); add_storico_doc($id_record,"Eseguita modifica pianificazione attivita"); } break; case "unlink_pianifica": $idriga = $_SESSION['idriga_pianificazione'] ; if( sizeof($idriga) > 0 ){ $dbo->query( "DELETE FROM in_interventi_tecnici WHERE id='$idriga'" ); array_push( $_SESSION['infos'], "Pianificazione eliminata" ); add_storico_doc($id_record,"Rimossa pianificazione attivita"); $_SESSION['idriga_pianificazione'] =""; } break; case "documento_differito"; $iddocumento_padre = save( $_POST['id_documentopadre'] ); doc_differito_crea($id_record,$iddocumento_padre,'0' ); array_push( $_SESSION['infos'], "Creato nuovo documento!" ); add_storico_doc($id_record,"Creazione documento differito"); break; case "firma": if( $modules_info[$module_name]["permessi"] == 'rw' ){ $query = "SELECT id , idintervento FROM in_interventi_tecnici WHERE id='".$id_record."'"; $rs_doc= $dbo->fetchArray($query); $id_record=$rs_doc[0]['idintervento']; $id_riga=$rs_doc[0]['id']; $directory_exists = false; if( !file_exists($docroot."/files/interventi") ){ if( @mkdir($docroot."/files/interventi") ){ $directory_exists = true; } } else{ $directory_exists = true; } if( $directory_exists ){ if( $html->form('firma_base64', 'post') != '' ){ //Salvataggio firma $firma_file = "firma_".time().".png"; $firma_nome = $_POST['firma_nome']; $ifp = @fopen( $docroot."/files/interventi/".$firma_file, "wb" ); $data = explode(',', $html->form('firma_base64', 'post') ); @fwrite( $ifp, base64_decode($data[1]) ); @fclose( $ifp ); if( $dbo->query("UPDATE in_interventi_tecnici SET firma_file=\"".$firma_file."\", firma_data=NOW(), firma_nome = \"".$firma_nome."\" WHERE id=\"".$id_riga."\"") ){ array_push( $_SESSION['infos'], "Firma salvata correttamente!" ); add_storico_doc($id_record,"Eseguita firma attivita"); } else{ array_push( $_SESSION['errors'], "Errore durante il salvataggio della firma nel database!" ); } } else{ array_push( $_SESSION['errors'], "Errore durante il salvataggio della firma! La firma risulta vuota..." ); } } else{ array_push( $_SESSION['errors'], "Non è stato possibile creare la cartella /files/interventi per salvare l'immagine della firma!" ); } } break; case "addriga_spese_pianifica": $idintervento = $html->form('idintervento', 'post'); $idriga = $html->form('idriga', 'post'); $data_mov = saveDate( $_POST['data_mov'] ); $descrizione = $html->form('descrizione', 'post'); $qta = force_decimal( $html->form('qta', 'post') ); $um = ""; $prezzo_vendita = force_decimal( $html->form('prezzo_vendita', 'post') ); $prezzo_acquisto= "0"; $sconto_prc = "0"; $sconto = "0"; $dbo->query("INSERT INTO in_righe_interventi( data_movimento ,idriga_pianifica,descrizione, qta, um, prezzo_vendita, prezzo_acquisto, sconto, sconto_prc, idintervento ) VALUES ( \"".$data_mov."\",\"".$idriga."\",\"".$descrizione."\", \"".$qta."\", \"".$um."\", \"".$prezzo_vendita."\", \"".$prezzo_acquisto."\", \"".$sconto."\", \"".$sconto_prc."\",\"".$idintervento."\" )"); break; case "delriga": $idriga = $html->form('idriga', 'post'); $dbo->query("DELETE FROM in_righe_interventi WHERE id='".$idriga."'"); break; case "delrigaart": $idriga = $html->form('idriga', 'post'); $dbo->query("DELETE FROM mg_articoli_interventi WHERE id='".$idriga."'"); break; case "inserisco_riga_come_posizione": $query = "SELECT * FROM in_righe_interventi WHERE idintervento='".$iddocumento."'"; $rs_riga = $dbo->fetchArray($query); //Processo solo le righe con qta da evadere maggiore di zero for( $i=0; $ifetchArray($query); $iva = ($prezzo-$sconto)/100*$rs[0]['percentuale']; $iva_indetraibile = $iva/100*$rs[0]['indetraibile']; $desc_iva = $rs[0]['descrizione']; $idconto=get_var_documento($iddocumento,'idconto'); //Aggiunta riga generica sul documento $query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto,idconto) VALUES( \"$iddocumento\", \"".$idiva."\", \"$desc_iva\", \"$iva\", \"$iva_indetraibile\", '".$rs_riga[$i]['descrizione']."', \"$prezzo\", \"$sconto\", \"$um\", \"$qta\", '', '', '', '' , \"".$idconto."\" )"; $dbo->query($query); } array_push( $_SESSION['infos'], "Inserito righe come posizioni" ); break; case "inserisco_art_come_posizione": $query = "SELECT * FROM mg_articoli_interventi WHERE idintervento='".$iddocumento."'"; $rs_riga = $dbo->fetchArray($query); //Processo solo le righe con qta da evadere maggiore di zero $id_magazzino_e = get_var_tipodoc2($iddocumento,"id_magazzino_e"); for( $i=0; $i= $qta ){ $prezzo="0"; }else{ $qta_new=$qta - $qta_disp;; $prezzo_new =$prezzo; $qta=$qta_disp; $prezzo="0"; $ins_doppia=1; $riga_canone1=2; $prezzo_tmp = cerca_canone_prezzo($records[0]['id_contratto'],$idarticolo); if( $prezzo_tmp != '' ) $prezzo_new=$prezzo_tmp; } }else{ // la qta disponibile non presente , cerco eventuale prezzo imposto $riga_canone1=2; $riga_canone=2; $prezzo_new = cerca_canone_prezzo($records[0]['id_contratto'],$idarticolo); if( $prezzo_new != '' ) $prezzo=$prezzo_new; if( $prezzo_new == '' ) $riga_canone=0; } $forza_zero=cerca_contratti_a_zero($records[0]['id_contratto']); if( $forza_zero == '1' ){ $prezzo_new=0; $prezzo=0; $riga_canone=2; $riga_canone1=2; } } $idriga = add_articolo_infattura( $iddocumento, $idarticolo, $rs_riga[$i]['descrizione'], $rs_riga[$i]['idiva_vendita'], $qta, $prezzo, 0, '0', '', '', '' ,$idconto,'',0,0,0,$idmagazzino,$riga_canone); //Imposto la provenienza del documento e la qta ottenuta dalla transazione $qana = "SELECT matricola FROM my_impianti WHERE id='".$records[0]['id_impianto']."'"; $rs_matricola = $dbo->fetchArray($qana); $matricola=$rs_matricola[0]['matricola']; $dbo->query( "UPDATE co_righe_documenti SET inserito_posizione_idriga ='".$rs_riga[$i]['idarticolo']."', id_impianto='".$records[0]['id_impianto']."' ,matricola_impianto='".$matricola."' WHERE id=\"".$idriga."\"" ); if($ins_doppia=='1'){ $idriga = add_articolo_infattura2( $iddocumento, $idarticolo, $rs_riga[$i]['descrizione'], $idiva, $qta_new, $prezzo_new*$qta_new, $sconto_new, '0', '', '', '' , $idconto,'','','','' ,$idmagazzino , $riga_canone1 ); $dbo->query( "UPDATE co_righe_documenti SET inserito_posizione_idriga ='".$rs_riga[$i]['idarticolo']."', id_impianto='".$records[0]['id_impianto']."' ,matricola_impianto='".$matricola."' WHERE id=\"".$idriga."\"" ); } } array_push( $_SESSION['infos'], "Inserito articoli come posizioni" ); break; case "addarticolo_p": $idarticolo = $html->form('idarticolo', 'post'); $idriga = $html->form('idriga', 'post'); $data_mov = saveDate( $_POST['data_mov'] ); $idintervento = $html->form('idintervento', 'post'); $descrizione = $html->form('descrizione', 'post'); $idimpianto = $html->form('idimpianto', 'post'); $lotto = $html->form('lotto', 'post'); $serial = $html->form('serial', 'post'); $altro = $html->form('altro', 'post'); $qta = $html->form('qta', 'post', true, 'decimal'); $um = query_secca("","idum","mg_articoli","where id ='".$idarticolo."'"); $um = query_secca("","valore","mg_unitamisura","where id ='".$um."'"); $prezzo_acquisto= "0"; $prezzo_vendita = $html->form('prezzo_vendita', 'post', true, 'decimal'); $sconto_unitario= "0"; $sconto_prc = "0"; //Aggiunto il collegamento fra l'articolo e l'intervento $dbo->query("INSERT INTO mg_articoli_interventi( data_movimento ,idriga_pianifica,idarticolo, idintervento, idimpianto, idautomezzo, descrizione, lotto, serial, altro, prezzo_vendita, prezzo_acquisto, sconto, sconto_prc, idiva_vendita, qta, um ) VALUES ( \"".$data_mov."\",\"".$idriga."\",'".$idarticolo."', '".$idintervento."', '".$idimpianto."', '".$idautomezzo."', \"".$descrizione."\", \"".$lotto."\", \"".$serial."\", \"".$altro."\", \"".$prezzo_vendita."\", \"".$prezzo_acquisto."\", \"".$sconto_unitario."\", \"".$sconto_prc."\", (SELECT idiva_vendita FROM mg_articoli WHERE id=\"".$idarticolo."\"), \"".$qta."\", \"".$um."\" )"); break; case "editnumero": $new_numero = $html->form('new_numero', 'post'); $tipo_documento=get_var_tipodoc2($iddocumento,'idtipodocumento'); $query = "SELECT numero_esterno FROM co_documenti WHERE numero_esterno='".$new_numero."' and idtipodocumento='".$tipo_documento."'"; $rs = $dbo->fetchArray($query); if (sizeof($rs) > 0) { array_push( $_SESSION['errors'], "Il numero documento ".$new_numero." gia presente in archivio" ); } else{ $suffisso=get_var_tipodoc2($iddocumento,'txt_suffisso'); $suffisso_anno=get_var_tipodoc2($iddocumento,'suffisso_anno'); $numero_documento=$suffisso.$new_numero; if( $suffisso_anno==1) $numero_documento = $numero_documento."_".date("Y"); $dbo->query( "UPDATE co_documenti SET numero_esterno = '".$new_numero."' , numero_documento = '".$numero_documento."' WHERE id='".$iddocumento."'" ); array_push( $_SESSION['infos'], "Modifica numero documento salvata" ); add_storico_doc($iddocumento,"Modificato numero documento"); } break; case "editnumero_protocollo": $new_numero = $html->form('new_numero', 'post'); $query = "SELECT numero_esterno FROM co_documenti WHERE id_protocollo='".$new_numero."'"; $rs = $dbo->fetchArray($query); if (sizeof($rs) > 0) { array_push( $_SESSION['errors'], "Il numero protoccolo ".$new_numero." gia presente in archivio" ); } else{ $dbo->query( "UPDATE co_documenti SET id_protocollo = '".$new_numero."' WHERE id='".$iddocumento."'" ); array_push( $_SESSION['infos'], "Modifica numero portocollo salvata" ); add_storico_doc($iddocumento,"Modificato numero protocollo"); } break; case "editanagrafica": $new_anagrafica = $html->form('idanagrafica_new', 'post'); $idagente=query_secca("","idagente","an_anagrafiche","where idanagrafica ='".$new_anagrafica."'"); $idbanca_vendite=query_secca("","idagente","an_anagrafiche","where idanagrafica ='".$new_anagrafica."'"); $dbo->query( "UPDATE co_documenti SET idanagrafica = '".$new_anagrafica."' , idbanca_vendite='".$idbanca_vendite."' , idagente='".$idagente."' , idsede='0' , matricola='' WHERE id='".$iddocumento."'" ); array_push( $_SESSION['infos'], "Modifica anagrafica documento salvata" ); add_storico_doc($iddocumento,"Modificato anagrafica documento"); break; case "add_duplica": $idtipodocumento = save( $_POST['idintervento'] ); $idanagrafica = save( $_POST['idanagrafica'] ); if ( $idtipodocumento <> '' ) { // cerco impostazioni tipo documento $idagente=query_secca("","idagente","an_anagrafiche","where idanagrafica ='".$idanagrafica."'"); $idbanca_vendite=query_secca("","idagente","an_anagrafiche","where idanagrafica ='".$new_anagrafica."'"); $idsede=get_var_tipodoc2($iddocumento ,'idsede'); $numerazione_progressiva=get_var_tipodoc($idtipodocumento,'mod_num'); $dir=get_var_tipodoc($idtipodocumento,'dir'); $idconto=get_var_tipodoc($idtipodocumento,'idconto'); $matricola=get_var_documento($iddocumento ,'matricola'); $idpagamento_new=get_var_tipodoc($idtipodocumento,'idpagamento'); $idstato=get_var_tipodoc($idtipodocumento,'sta_apertura'); $id_gruppodoc=get_var_tipodoc($idtipodocumento,'id_gruppo_tipologia'); $suffisso=get_var_tipodoc($idtipodocumento,'txt_suffisso'); $suffisso_anno=get_var_tipodoc($idtipodocumento,'suffisso_anno'); $ordine_servizio=get_var_tipodoc($idtipodocumento,'mod_ordineservizio'); $idmagazzino=get_var_tipodoc($idtipodocumento,'id_magazzino_e'); $data=date("Y-m-d"); if( $numerazione_progressiva==0) $numero = get_new_numerofattura( $data ); if( $numerazione_progressiva==1) $numero=get_new_numerofattura_multi($data,$idtipodocumento); if( $dir=='entrata' ){ if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } else{ $numero_esterno = ''; $forza_numerazione=get_var_tipodoc($idtipodocumento,'forza_numerazione'); if( $forza_numerazione =='1' ){ // forzatura numero progressivo if( $numerazione_progressiva==0) $numero_esterno = get_new_numerosecondariofattura( $data,$idtipodocumento ); if( $numerazione_progressiva==1) $numero_esterno = get_new_numerosecondariofattura_multi( $data,$idtipodocumento ); } } $numero_documento=$suffisso.$numero_esterno; if( $suffisso_anno==1) $numero_documento = $numero_documento."_".date("Y"); //Creazione nuovo documento //Tipo di pagamento predefinito dall'anagrafica $query = "SELECT id FROM co_pagamenti WHERE id=(SELECT idpagamento FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."')"; $rs = $dbo->fetchArray($query); $idpagamento = $rs[0]['id']; $tab_testata=" co_documenti "; $tab_righe=" co_righe_documenti "; $tab_transazione=" co_documenti_transazioni "; // testo se devo inserire il protocollo $nuovo_id_protocollo=0; $mod_prodotollo = get_var_tipodoc($idtipodocumento,'mod_prodotollo'); if( $mod_prodotollo=='1' ){ $query = "SELECT IFNULL(MAX(id_protocollo),'0') AS max_protocollo FROM co_documenti WHERE DATE_FORMAT( data, '%Y' ) = '".date("Y", strtotime($data))."' ORDER BY CAST(id_protocollo AS UNSIGNED) DESC LIMIT 0,1"; $rs = $dbo->fetchArray($query); $nuovo_id_protocollo = $rs[0]['max_protocollo']+1; } // impostazione data protocollo if( date ('d') <= 15){ $data_prot = date ('Y/m/15'); }else{ $data_prot = date ('Y/m/t'); } //Se la fattura è di vendita e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni if( $dir=='entrata' && $idpagamento=='' ) $idpagamento = $idpagamento_new; $query = "INSERT INTO ".$tab_testata." ( id_protocollo,data_prot,idbanca_vendite,idagente , numero, numero_esterno,numero_documento, id_gruppo_tipologia,idanagrafica, idconto, idtipodocumento, idpagamento, data, idstatodocumento, idsede , matricola) VALUES ( \"".$nuovo_id_protocollo."\",\"".$data_prot."\",\"".$idbanca_vendite."\",\"".$idagente."\",\"".$numero."\", \"".$numero_esterno."\", \"".$numero_documento."\",\"".$id_gruppodoc."\",\"".$idanagrafica."\", \"".$idconto."\", \"".$idtipodocumento."\", \"".$idpagamento."\", NOW() , \"".$idstato."\",\"".$idsede."\",\"".$matricola."\")"; $dbo->query($query); $iddocumento_new = $dbo->last_inserted_id(); $query = "SELECT * FROM co_righe_documenti WHERE iddocumento='".$iddocumento."' order by id"; $rs_riga = $dbo->fetchArray($query); for( $ri=0; $rifetchArray($query); }else{ if( $rs_riga[$ri]['idarticolo'] == '0' ){ $query = "INSERT INTO co_righe_documenti( iddocumento, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto,idconto,tipo_sconto,sconto_primo,sconto_extra ,sconto_extra1,importo_agente,importo_iva_agente,perc_agente) VALUES( \"$iddocumento_new\", '".$rs_riga[$ri]['idiva']."','".$rs_riga[$ri]['desc_iva']."','".$rs_riga[$ri]['iva']."','".$rs_riga[$ri]['iva_indetraibile']."','".$rs_riga[$ri]['descrizione']."',' ".$rs_riga[$ri]['subtotale']."','".$rs_riga[$ri]['sconto']."','".$rs_riga[$ri]['um']."','".$rs_riga[$ri]['qta']."','".$rs_riga[$ri]['idrivalsainps']."',' ".$rs_riga[$ri]['rivalsainps']."','".$rs_riga[$ri]['idritenutaacconto']."','".$rs_riga[$ri]['ritenutaacconto']."','".$rs_riga[$ri]['idconto']."','".$rs_riga[$ri]['tipo_sconto']."', '".$rs_riga[$ri]['sconto_primo']."','".$rs_riga[$ri]['sconto_extra']."','".$rs_riga[$ri]['sconto_extra1']."','".$rs_riga[$ri]['importo_agente']."','".$rs_riga[$ri]['importo_iva_agente']."','".$rs_riga[$ri]['perc_agente']."')"; $dbo->fetchArray($query); }else{ $idriga = add_articolo_infattura( $iddocumento_new, $rs_riga[$ri]['idarticolo'], $rs_riga[$ri]['descrizione'], $rs_riga[$ri]['idiva'], $rs_riga[$ri]['qta'], $rs_riga[$ri]['subtotale'],$rs_riga[$ri]['sconto'], '0', '', '', '' , $rs_riga[$ri]['idconto'],$rs_riga[$ri]['tipo_sconto'],$rs_riga[$ri]['sconto_primo'],$rs_riga[$ri]['sconto_extra'],$rs_riga[$ri]['sconto_extra1'],$rs_riga[$ri]['id_magazzino'],'','','' ); } } } array_push( $_SESSION['infos'], "Aggiunto documento numero ".$numero_documento."!" ); add_storico_doc($iddocumento,"Generato nuovo documento con la funzione duplica"); add_storico_doc($iddocumento_new,"Documento generato da Duplica"); } break; case "edit_stato_invio_xml": $id_progressivo = save( $_POST['id_progressivo'] ); $id_stato_invio = save( $_POST['idintervento'] ); $data_invio_xml = saveDate( $_POST['data_invio_xml'] ); $orario = savetime( $_POST['orario'] ); $or=date("H:i", strtotime($orario)); $data_invio_xml=date("Y-m-d", strtotime($data_invio_xml))." ".$or.":00"; if ( $id_progressivo <> '' ) { $dbo->query( "UPDATE co_documenti_progressivo SET inviato = '".$id_stato_invio."' , data_invio='".$data_invio_xml."' WHERE id='".$id_progressivo."'" ); array_push( $_SESSION['infos'], "Stato invio modificato" ); } break; case "edit_esito_invio_xml": $id_progressivo = save( $_POST['id_progressivo'] ); $id_stato_invio = save( $_POST['idintervento'] ); $data_invio_xml = saveDate( $_POST['data_invio_xml'] ); $orario = savetime( $_POST['orario'] ); $or=date("H:i", strtotime($orario)); $data_invio_xml=date("Y-m-d", strtotime($data_invio_xml))." ".$or.":00"; if ( $id_progressivo <> '' ) { $dbo->query( "UPDATE co_documenti_progressivo SET esito = '".$id_stato_invio."' , data_esito='".$data_invio_xml."' WHERE id='".$id_progressivo."'" ); array_push( $_SESSION['infos'], "Stato invio modificato" ); } break; case "edit_link_xml": $id_link = save( $_POST['id_link'] ); $iddocumento = save( $_POST['iddocumento'] ); $query="Insert into co_documenti_transazioni (idpadre,idfiglio,data_transazione,idutente) values (\"".$id_link."\", \"".$iddocumento."\",NOW(), '".$_SESSION['idutente']."')"; $dbo->query($query); break; case "add_qta": $idriga = save( $_POST['idriga'] ); mod_riga($idriga,"A") ; break; case "del_qta": $idriga = save( $_POST['idriga'] ); mod_riga($idriga,"S") ; break; case "firma_totale": if( $modules_info[$module_name]["permessi"] == 'rw' ){ $directory_exists = false; if( !file_exists($docroot."/files/interventi_complessivo") ){ if( @mkdir($docroot."/files/interventi_complessivo") ){ $directory_exists = true; } } else{ $directory_exists = true; } if( $directory_exists ){ if( $html->form('firma_base64', 'post') != '' ){ //Salvataggio firma $firma_file = "firma_".time().".png"; $firma_nome = $_POST['firma_nome']; $ifp = @fopen( $docroot."/files/interventi_complessivo/".$firma_file, "wb" ); $data = explode(',', $html->form('firma_base64', 'post') ); @fwrite( $ifp, base64_decode($data[1]) ); @fclose( $ifp ); if( $dbo->query("UPDATE in_interventi SET firma_file=\"".$firma_file."\", firma_data=NOW(), firma_nome = \"".$firma_nome."\" WHERE idintervento=\"".$id_record."\"") ){ $dbo->query("UPDATE co_documenti SET firma_file=\"".$firma_file."\", firma_data=NOW(), firma_nome = \"".$firma_nome."\" WHERE id=\"".$id_record."\""); array_push( $_SESSION['infos'], "Firma salvata correttamente!" ); } else{ array_push( $_SESSION['errors'], "Errore durante il salvataggio della firma nel database!" ); } } else{ array_push( $_SESSION['errors'], "Errore durante il salvataggio della firma! La firma risulta vuota..." ); } } else{ array_push( $_SESSION['errors'], "Non è stato possibile creare la cartella /files/interventi per salvare l'immagine della firma!" ); } } break; } ?>